过滤django-import-export

itm*_*ard 6 django django-models django-import-export

我想创建csv文件,我的模型将查询字典(过滤器排除)发送到django-import-export并从我的模型返回数据.

使用流动代码我有所有的模型字段,但我需要用查询过滤它们.

from import_export import resources
from finance.models import Price

class ExportData(resources.ModelResource):

    class Meta:
        model = Price
Run Code Online (Sandbox Code Playgroud)

bmi*_*lac 9

传递queryset方式:

queryset = Price.objects.exclude(...)
data = ExportData().export(queryset)
data.csv
Run Code Online (Sandbox Code Playgroud)

  • 我只是通过记录django实际生成的SQL查询注意到,这显然评估了查询集,然后使queryset.count()个别SQL查询生成CSV.不酷 (2认同)

eca*_*rol 6

要仅过滤导出的文件而不是管理屏幕中的实际列表,您可以覆盖该get_export_queryset方法

from import_export import resources
from import_export.admin import ImportExportMixin

class ProductAdmin(ImportExportMixin, admin.ModelAdmin):
    resource_class = ProductResource

    # Override of ImportExportMixin.get_export_queryset
    # Filter export to exclude Products where is_active is false
    def get_export_queryset(self, request):
            return Product.objects.filter(is_active=True)
Run Code Online (Sandbox Code Playgroud)