更改列表页面上的 django admin 附加字段
Posted
技术标签:
【中文标题】更改列表页面上的 django admin 附加字段【英文标题】:django admin additional field on changelist page 【发布时间】:2013-06-07 18:14:59 【问题描述】:嗯,我相信这是一个普遍的问题。
假设我有一个名为 Book 的模型和另一个名为 Author 的模型。 Author 是 Book 的外键。
简单吧?
在 BookAdmin 页面上,我想显示图书的作者。所以在 list_display 字段中我有:
list_display = ('book_name', 'author'.....)
然后我使用 django-debug-toolbar 来检查加载页面时执行的查询数。 已经执行了大约 100 多个查询。 (我在同一页上有 100 本书条目)
如果我不包括“作者”,则只有 5 个查询(类似的)。
我知道额外的查询来自外键。
我的问题是,当我们处理外键时,是否有办法减少正在执行的查询数量?
我不想执行任何复杂的操作。我只想在该外键模型中调用 unicode() 方法。
提前致谢
【问题讨论】:
【参考方案1】:嗯,我自己发现了。
这样做的方法是覆盖 BookAdmin 类中的 queryset()。
喜欢:
def queryset(self, request):
return Book.objects.all().select_related('author')
就是这样。 Django 将在加载 Book 的同时加载 Author。所以只会有数据库命中而不是超过 100 次命中。
【讨论】:
以上是关于更改列表页面上的 django admin 附加字段的主要内容,如果未能解决你的问题,请参考以下文章