“MediaDefiningClass”对象不是iterable Djangoimportexp

2024-10-08 16:47:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个django应用程序,在管理页面,我想能够导出一个模型的列表视图为csv,xls和其他多种文件格式。我使用django-import-export包来实现这一点。我已在中安装并将其添加到已安装的应用程序中设置.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文件

^{pr2}$

为了处理导入和导出功能,我在同一个目录中创建了一个名为资源.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导入导出文档后,我更新了我的管理员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)

我做错什么了?有人请帮忙。在


Tags: djangonamefrompyimportadminmodelsexport
1条回答
网友
1楼 · 发布于 2024-10-08 16:47:17

根据这个变化

class StudentAdmin(ImportExportActionModelAdmin):
  resource_class = StudentResource
  list_display = ('firstname', 'lastname', 'admission_number', 'grade', 'joined')
  list_filter = ('grade', 'joined',)



admin.site.register(Student,StudentAdmin)

删除这一行,因为import-export将根据您使用的resources自动将其放在admin面板中。在

相关问题 更多 >

    热门问题