Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 自定义ModelResource中用于下载数据的字段_Django_Django Import Export - Fatal编程技术网

Django 自定义ModelResource中用于下载数据的字段

Django 自定义ModelResource中用于下载数据的字段,django,django-import-export,Django,Django Import Export,使用Django,我目前正在使用以下代码创建一个资源,可用于以多种格式(例如csv、excel、json等)从Django项目下载数据: 从导入导出导入资源 class Resource1(resources.ModelResource): class Meta: model = Person fields = ('First_Name', 'Last_Name') resource = Resource1() dataset = resource.ex

使用Django,我目前正在使用以下代码创建一个
资源
,可用于以多种格式(例如csv、excel、json等)从Django项目下载数据:

从导入导出导入资源

class Resource1(resources.ModelResource):
    class Meta:
        model = Person
        fields = ('First_Name', 'Last_Name')

resource = Resource1()
dataset = resource.export(queryset)
我现在正在创建多个具有不同属性(例如不同字段)的资源版本。是否可以动态更改Meta(或_Meta),以便使用所需的属性创建它

class Resource2(resources.ModelResource):
    def __init__(self, fields):
        self.Meta.fields = fields
        # self._meta.fields = fields
    class Meta:
        model = Person

resource = Resource2(['First_Name', 'Last_Name', 'Address'])
dataset = resource.export(queryset)

当我尝试此操作时,结果下载是空的。

不确定我是否正确理解了您的问题,但我认为您无法使元选项“动态”

但是,您可以做的是拥有一个抽象基类(Resource1)并从中继承,例如Resource2?以下是django文档的链接:


我不确定你的问题是否正确,但我认为你无法使元选项“动态”

但是,您可以做的是拥有一个抽象基类(Resource1)并从中继承,例如Resource2?以下是django文档的链接:


我找到了一种直接的方法来动态更改类实例的内部
类Meta
部分中的字段。下面的
create_resource
函数根据需要创建类的自定义版本,然后返回实例:

def create_resource(django_model, model_fields):
    class model_resource(resources.ModelResource):
        class Meta:
           model = django_model
           fields = model_fields
    return model_resource()

resource = create_resource(Person, ['First_Name', 'Last_Name', 'Address'])
然后,我可以使用该资源导出数据:

dataset = resource.export(queryset)

我找到了一种直接的方法来动态更改类实例的内部
类Meta
部分中的字段。下面的
create_resource
函数根据需要创建类的自定义版本,然后返回实例:

def create_resource(django_model, model_fields):
    class model_resource(resources.ModelResource):
        class Meta:
           model = django_model
           fields = model_fields
    return model_resource()

resource = create_resource(Person, ['First_Name', 'Last_Name', 'Address'])
然后,我可以使用该资源导出数据:

dataset = resource.export(queryset)

我不认为这会有帮助-我需要用户能够更改在运行时包含哪些字段我不认为这会有帮助-我需要用户能够更改在运行时包含哪些字段