django在更改列表页面上管理其他字段

django admin additional field on changelist page

嗯,我认为这是一个普遍的问题。

假设我有一个模型,叫做书,还有一个模型,叫做作者。作者是书的外宾。

别紧张,哈?

在BookAdmin页面上,我想显示这本书的作者。所以在列表显示字段中,我有:

1
list_display = ('book_name', 'author'.....)

然后,我使用django调试工具栏检查加载页面时执行的查询数。已经执行了大约100多个查询。(我在同一页上有100个图书条目)

如果我不包括"author",那么只有5个查询(类似这样)。

我知道额外的查询来自于外键。

我的问题是,在处理外键时,是否有必要减少正在执行的查询的数量?

我不想做任何复杂的手术。我只想在该外键模型中调用unicode()方法。

提前谢谢


嗯,我自己发现的。

方法是重写BookAdmin类中的queryset()。

像:

1
2
def queryset(self, request):
    return Book.objects.all().select_related('author')

就是这样。Django将在加载书籍的同时加载作者。所以只有数据库命中,而不是超过100次。