Использование django-import-export: Как настроить, какие поля экспортировать в файлы Excel

Я только начинаю использовать Django. Я использую пакет django-import-export и я пытался настроить мою панель администратора Django на этой странице для того, чтобы выбрать, какие поля экспортировать в файл excel.

Вот моя модель администратора

    class CompanyAdmin(ImportExportMixin, admin.ModelAdmin):

        model = Company
        
        resource_classes = [CompanyResource]
        
        list_display = [
            "name",
            "uuid",
        ]
        
        fields = [
            "name",
            "email",
        ]
        
        def get_export_resource_kwargs(self, request, *args, **kwargs):
            formats = self.get_export_formats()
            form = CompanyExportForm(formats, request.POST or None)
            form_fields = ("name", "email", ) 
            return {"form_fields": form_fields}

Вот мой модельный ресурс

class CompanyResource(resources.ModelResource):
    class Meta:
        model = Company
    
    def __init__(self, form_fields=None):
        super().__init__()
        self.form_fields = form_fields

    def get_export_fields(self):
        return [self.fields[f] for f in self.form_fields]

Вот моя форма экспорта

class CompanyExportForm(ExportForm):

    # what should i write here? is this the place that i should write the custom code eg: checkboxes where user have the options to export the 'name` or 'email' fields ??

Я пытаюсь использовать тот же способ, что и в этом посте, чтобы достичь того же результата. Однако я застрял навсегда.

Если вы хотите определить, какие поля должны быть экспортированы, обратитесь к этой записи. Это означает, что экспортироваться будут только эти поля, и пользователь не сможет выбирать. Этого относительно просто добиться.

Как бы ни казалось, вы хотите, чтобы пользователь мог выбирать поля в пользовательском интерфейсе, тогда это сложнее и потребует большей настройки. Ответ , на который вы ссылаетесь, является отправной точкой.

Необходимо создать некий элемент пользовательского интерфейса, в котором пользователь сможет выбрать поля для экспорта (например, некий виджет мультиселекта). Затем при POST вы должны будете считывать идентификаторы этих полей и передавать их в метод export().

Если вы новичок в Django, это потребует некоторой работы для реализации, и будет довольно крутой кривой обучения. Если вы сможете найти "чистый" способ реализовать это, такой, который смогут реализовать будущие пользователи, мы рассмотрим PR.

Вернуться на верх