【发布时间】:2019-06-18 15:32:09
【问题描述】:
Django 版本:1.11
蟒蛇:2.7
包:django-import-export
我正在尝试导出 Django 管理页面的“可调用”字段。 (参考:https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display)
在他们的示例中,他们的 PersonAdmin list_display 有一个“可调用”。
def upper_case_name(obj):
return ("%s %s" % (obj.first_name, obj.last_name)).upper()
upper_case_name.short_description = 'Name'
class PersonAdmin(ExportMixin, admin.ModelAdmin):
list_display = (upper_case_name,)
对于资源,我想我也可以导出可调用字段。
class PersonResource(resources.ModelResource):
class Meta:
model = Person
fields = ( "first_name",
"last_name",
"upper_case_name", )
但是,我会得到 Person has no field named upper_case_name。
有没有办法导出可调用字段?
从文档看来,您确实可以导出不存在的字段。
https://django-import-export.readthedocs.io/en/latest/getting_started.html
他们的例子是:
from import_export.fields import Field
class BookResource(resources.ModelResource):
full_title = Field()
class Meta:
model = Book
def dehydrate_full_title(self, book):
return '%s by %s' % (book.name, book.author.name)
我复制了这个并尝试了:
class PersonResource(resources.ModelResource):
upper_case_name = Field()
class Meta:
model = Person
def dehydrate_upper_case_name(self, obj):
return ("%s %s" % (obj.first_name, obj.last_name)).upper()
我尝试做同样的事情,但我会收到错误 Person has no field named upper_case_name。
有什么想法吗?
提前致谢!
【问题讨论】:
标签: django django-1.11 django-import-export