有没有通用的方法来实现列名?
Is there a generic way to implement column names?
我正在尝试以通用方式实现 django-import-export 库。
在 Meta class 中设置字段 属性 时,无法设置列名。当直接在 ModelResource
上设置 Field()
时,这是可能的。但据我所知,您不能以通用方式创建它们。
这是我已有的:
def create_resource(django_model, model_fields):
class ModelResource(resources.ModelResource):
class Meta:
model = django_model
fields = model_fields
return ModelResource()
我找到了解决方案。
from import_export import resources
from import_export.fields import Field
def create_resource(django_model, django_fields):
class ModelResource(resources.ModelResource):
class Meta:
model = django_model
fields = ()
resource = ModelResource()
for attribute, name in django_fields:
resource.fields[attribute] = Field(attribute=attribute, column_name=name)
return resource
create_resource
将使用 django_fields
参数中的所有 Fields
创建 ModelResource
。
django_fields
变量将如下所示:
django_fields = [
("id", "ID"),
("first_name", "First name"),
("last_name", "Last name"),
("group__name", "Group name"),
]
我正在尝试以通用方式实现 django-import-export 库。
在 Meta class 中设置字段 属性 时,无法设置列名。当直接在 ModelResource
上设置 Field()
时,这是可能的。但据我所知,您不能以通用方式创建它们。
这是我已有的:
def create_resource(django_model, model_fields):
class ModelResource(resources.ModelResource):
class Meta:
model = django_model
fields = model_fields
return ModelResource()
我找到了解决方案。
from import_export import resources
from import_export.fields import Field
def create_resource(django_model, django_fields):
class ModelResource(resources.ModelResource):
class Meta:
model = django_model
fields = ()
resource = ModelResource()
for attribute, name in django_fields:
resource.fields[attribute] = Field(attribute=attribute, column_name=name)
return resource
create_resource
将使用 django_fields
参数中的所有 Fields
创建 ModelResource
。
django_fields
变量将如下所示:
django_fields = [
("id", "ID"),
("first_name", "First name"),
("last_name", "Last name"),
("group__name", "Group name"),
]