I was having a look at the following library - django-import-export. However, I am having issues with exporting with friendly/verbose column names for related objects.
Related link: 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")
Exporting will show "Name" for the human but the pet name will show up as "pet__name".
I'm not sure how to approach overriding the get_export_headers method to display the related objects verbose name.
I am currently using: - Python 2.7 - Django 1.11