脱水同场django
Dehydrate the same field django
我有一个模型Student
:
class Student(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=30, verbose_name='Name')
lastname = models.CharField(max_length=100, verbose_name='Lastname')
history = HistoricalRecords()
我还有一个模型:
class Class(models.Model):
id = models.AutoField(primary_key=True)
student = models.models.ForeignKey(Student,on_delete = models.CASCADE, related_name='+')
我的admin.py
class ClassResource(resources.ModelResource):
class Meta:
model = Class
fields = ('student',)
def dehydrate_student(self, Class):
student= getattr(Class.student, "name")
return '%s' % (student)
class ClassExportAdmin(ImportExportModelAdmin, ClassAdmin):
resource_class = ClassResource
admin.site.register(Class, ClassExportAdmin)
我现在只执行name
,是否可以让同一专业的学生再脱水一次。我需要在我的第 2 列中输入学生的姓氏。
要同时导出 Student.name
和 Student.lastname
,您可以在 fields
参数中直接引用外键关系 (docs):
class ClassResource(resources.ModelResource):
class Meta:
model = Class
fields = ('student__name', 'student__lastname')
这意味着列名称将在您的导出中显示为:
student__name
student__lastname
如果想要名字不一样,可以直接声明一个字段:
name = Field(
column_name='name',
attribute='name',
widget=ForeignKeyWidget(Student, 'name'))
这将出现在 name
下的导出中。
我有一个模型Student
:
class Student(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=30, verbose_name='Name')
lastname = models.CharField(max_length=100, verbose_name='Lastname')
history = HistoricalRecords()
我还有一个模型:
class Class(models.Model):
id = models.AutoField(primary_key=True)
student = models.models.ForeignKey(Student,on_delete = models.CASCADE, related_name='+')
我的admin.py
class ClassResource(resources.ModelResource):
class Meta:
model = Class
fields = ('student',)
def dehydrate_student(self, Class):
student= getattr(Class.student, "name")
return '%s' % (student)
class ClassExportAdmin(ImportExportModelAdmin, ClassAdmin):
resource_class = ClassResource
admin.site.register(Class, ClassExportAdmin)
我现在只执行name
,是否可以让同一专业的学生再脱水一次。我需要在我的第 2 列中输入学生的姓氏。
要同时导出 Student.name
和 Student.lastname
,您可以在 fields
参数中直接引用外键关系 (docs):
class ClassResource(resources.ModelResource):
class Meta:
model = Class
fields = ('student__name', 'student__lastname')
这意味着列名称将在您的导出中显示为:
student__name
student__lastname
如果想要名字不一样,可以直接声明一个字段:
name = Field(
column_name='name',
attribute='name',
widget=ForeignKeyWidget(Student, 'name'))
这将出现在 name
下的导出中。