Использование 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.