相关内联的python django list_display

python django list_display on related inlines

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Can “list_display” in a Django ModelAdmin display attributes of ForeignKey fields?

我想在来自另一个相关模型的模型的管理列表视图中显示一些信息。

1
2
3
4
5
6
7
8
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添加自定义列。我还建议更新get_queryset()以确保只在一个查询中获取相关对象,而不是每行生成一个查询。

1
2
3
4
5
6
7
8
9
10
11
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')


不是直接创建,但可以创建一个打印出所需内容的方法,并将该方法名添加到列表显示中。查看列表显示的文档