У меня есть приложение django, над которым я работаю, и на странице администратора я хотел бы иметь возможность экспортировать представление списка моделей в виде csv, xls и нескольких других форматов файлов.Для этого я использую django-import-export
пакет.Я установил и добавил его в мои установленные приложения в файле settings.py.
В моем models.py
у меня есть ..
class Student(models.Model):
firstname = models.CharField(max_length=20)
middlename = models.CharField(max_length=20)
lastname = models.CharField(max_length=20)
admission_number = models.CharField(max_length=10)
grade = models.CharField(max_length=10)
joined = models.DateField(auto_now_add=True)
def __str__(self):
return f'{self.firstname} {self.lastname}'
Мой admin.py
файл
class StudentAdmin(admin.ModelAdmin):
list_display = ('firstname', 'lastname', 'admission_number', 'grade', 'joined')
list_filter = ('grade', 'joined',)
admin.site.register(Student, StudentAdmin)
Для обработки функций импорта и экспорта я создал файл в том же каталоге с именем resource.py, где у меня есть следующий django-import-export
специальный код.
from import_export import resources
from import_exports.fields import Field
from .models import Student
class StudentResource(resources.ModelResource):
full_name = Field(column_name='name')
class Meta:
model = Student
fields = ('full_name', 'admission_number', 'grade', 'joined')
widgets = {
'joined': { 'format': '%d/%m/%Y'},
}
def dehydrate_full_name(self, student):
return f'{student.firstname} {student.middlename} {student.lastname}'
Как вы можете видеть изВ приведенном выше коде я создал новое поле full_name
, в которое я хочу поместить полное имя студента под столбцом name
, и я бы хотел, чтобы оно экспортировалось таким образом.
Я бы хотел бытьВ состоянии экспортировать данные с помощью действия администратора, и после прочтения документации django-import-export я обновил свой файл admin.py ..
# Added these imports
from import_export.admin import ImportExportActionModelAdmin
from .resource import StudentResource
class StudentExportAdmin(ImportExportActionModelAdmin):
resource_class = StudentResource
class StudentAdmin(admin.ModelAdmin):
list_display = ('firstname', 'lastname', 'admission_number', 'grade', 'joined')
list_filter = ('grade', 'joined',)
admin.site.register(Student, StudentAdmin)
admin.site.register(StudentExportAdmin)
Что я здесь не так делаю?Кто-нибудь, пожалуйста, помогите.