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次。