9

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

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

from import_export import resources
from finance.models import Price

class ExportData(resources.ModelResource):

    class Meta:
        model = Price
4

3 回答 3

12

传递queryset给导出方法:

queryset = Price.objects.exclude(...)
data = ExportData().export(queryset)
data.csv
于 2013-07-22T15:21:24.557 回答
5

要仅过滤导出的文件而不是管理屏幕中的实际列表,您可以覆盖该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)
于 2019-07-16T18:27:33.883 回答
3

您可以覆盖文件中的export方法,以在管理员上应用过滤器:resources.ModelResourceadmin.py

from import_export import resources
from finance.models import Price

class ExportData(resources.ModelResource):

    class Meta:
        model = Price

    def export(self, queryset=None, *args, **kwargs):
        # For example only export objects with ids in 1, 2, 3 and 4
        queryset = queryset and queryset.filter(id__in=[1, 2, 3, 4])
        return super(ExportData, self).export(queryset, *args, **kwargs)
于 2019-03-07T14:42:36.620 回答