可能重复:
Can “list_display” in a Django ModelAdmin display attributes of ForeignKey fields?
我想在模型的管理列表视图中显示一些信息来自另一个相关模型。
class Identity(models.Model):
blocked = models.BooleanField()
...
class Person(models.Model):
modelARef = OneToOneField("Identity", primary_key=True)
descr = models.CharField(max_length=255)
name = models.CharField(max_length=255)
用户应该能够在管理页面上添加/编辑“人物”。由于不支持反向内联,我必须在管理页面上显示“身份”,然后内联“人员”。 “身份”仅包含“人员”的其他信息,该信息应在管理页面上显示。
现在,当我有“身份”的管理页面时,如何在“身份”的list_display上显示“人物”模型中的字段?
问候
编辑:我可以向“身份”添加一些功能,查询相关的“人员”并返回所需的值,但如果我这样做,就不可能对该列进行排序。
答案 0 :(得分:12)
您可以使用list_display
添加自定义列。我还建议更新get_queryset()
以确保仅在一个查询中获取相关对象,而不是每行导致查询。
class IdentityAdmin(admin.ModelAdmin):
list_display = ('blocked', 'person_name')
def person_name(self, object):
return object.person.name
person_name.short_description = _("Person name")
def get_queryset(self, request):
# Prefetch related objects
return super(IdentityAdmin, self).get_queryset(request).select_related('person')
答案 1 :(得分:0)
不是直接的,但您可以创建一个打印出您想要的方法,并将方法名称添加到list_display。见docs on list_display