Есть ли общий способ реализации имен столбцов? - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь реализовать библиотеку django-import-export универсальным способом.

При установке свойства fields в классе Meta нет способа задать имена столбцов.При установке Field() на ModelResource напрямую это возможно.Но, насколько я знаю, вы не можете создавать их в общем виде.

Это то, что у меня уже есть:

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

    return ModelResource()

1 Ответ

0 голосов
/ 16 февраля 2019

Я нашел решение.

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_fields.Переменная django_fields будет выглядеть следующим образом:

django_fields = [
            ("id", "ID"),
            ("first_name", "First name"),
            ("last_name", "Last name"),
            ("group__name", "Group name"),
        ]
...