【问题标题】:Exporting using django-import-export and showing verbose names of related objects使用 django-import-export 导出并显示相关对象的详细名称
【发布时间】:2019-02-16 02:48:39
【问题描述】:

我正在查看以下库 - 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

【问题讨论】:

    标签: python django python-2.7 django-1.11 django-import-export


    【解决方案1】:

    我猜你的 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
    

    (注:未经测试。)

    【讨论】:

    • 无需小部件即可为我工作。谢谢
    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 2011-11-17
    • 2018-10-06
    • 1970-01-01
    相关资源
    最近更新 更多