gpt4 book ai didi

python - 使用 django-import-export 导出并显示相关对象的详细名称

转载 作者:太空宇宙 更新时间:2023-11-04 04:33:24 24 4
gpt4 key购买 nike

我正在查看以下库 - django-import-export。但是,我在使用相关对象的友好/详细列名导出时遇到问题。

相关链接:https://github.com/django-import-export/django-import-export/issues/52

class HumanModelResource(resources.ModelResource):
def get_export_headers(self):
headers = []
for field in self.get_fields():
model_fields = self.Meta.model._meta.get_fields()
header = next((x.verbose_name for x in model_fields if x.name == field.column_name), field.column_name)
headers.append(header)
return headers

class Meta:
model = Human
fields = ("name", "pet__name")

class HumanAdmin(ExportMixin, admin.ModelAdmin):
resource_class = HumanModelResource
list_display = ("name", "pet")

class Human(models.Model):
name = models.CharField(max_length=255, verbose_name="Name")
pet = models.ForeignKey(Pet)

class Pet(models.Model):
name = models.CharField(max_length=255, verbose_name="Pet Name")

导出时将为人类显示“名称”,但宠物名称将显示为“pet__name”。

我不确定如何覆盖 get_export_headers 方法来显示相关对象的详细名称。

我目前正在使用:- Python 2.7- Django 1.11

最佳答案

我猜你的 get_export_headers() 失败了,因为 x.name == field.column_name 匹配失败(x.name = petfield.column_name = pet__name)。

因此,您可以修复该特定错误,但还有另一种方法更符合 Django Import/Export 的 API:显式定义外键关系。

from import-export import resources, fields

class HumanModelResource(resources.ModelResource):

petname = fields.Field(
attribute="pet",
column_name="Pet Name",
widget=ForeignKeyWidget(Pet, "name")
)

class Meta:
model = Human
fields = ("name", "petname") # note the change

(注意:未经测试。)

关于python - 使用 django-import-export 导出并显示相关对象的详细名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52278610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com