嗯,我相信这是一个普遍的问题。
假设我有一个名为Book的模型,另一个名为Author的模型。而作者是Book的外键。
容易,哈?
在BookAdmin页面上,我想显示Book of Book。所以在list_display字段中我有:
list_display = ('book_name', 'author'.....)
然后我使用django-debug-toolbar检查加载页面时执行的查询数。 已经执行了大约100多个查询。 (我在同一页面上有100个图书条目)
如果我不包含“作者”,则只有5个查询(类似于此)。
我知道额外的查询来自外键。
我的问题是,无论如何都要减少处理外键时执行的查询数量?
我不想执行任何复杂的操作。我只想在该外键模型中调用 unicode ()方法。
提前致谢
答案 0 :(得分:1)
好吧,我自己发现了。
这样做的方法是覆盖BookAdmin类中的 queryset()。
像:
def queryset(self, request):
return Book.objects.all().select_related('author')
就是这样。 Django将在加载Book的同时加载作者。因此,只有数据库命中而不是超过100次点击。