是否有通用的方法来实现列名?

问题描述 投票:1回答:1

我正在尝试以通用方式实现django-import-export库。

在Meta类中设置fields属性时,无法设置列名称。当直接在Field()上设置ModelResource时,它是可能的。但据我所知,你不能以通用的方式创建它们。

这就是我已经拥有的:

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

    return ModelResource()
python django django-import-export
1个回答
0
投票

我找到了解决方案。

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将使用ModelResource参数中的所有Fields创建django_fieldsdjango_fields变量将如下所示:

django_fields = [
            ("id", "ID"),
            ("first_name", "First name"),
            ("last_name", "Last name"),
            ("group__name", "Group name"),
        ]
© www.soinside.com 2019 - 2024. All rights reserved.