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

时间:2013-06-11 19:08:25

标签: django django-admin

嗯,我相信这是一个普遍的问题。

假设我有一个名为Book的模型,另一个名为Author的模型。而作者是Book的外键。

容易,哈?

在BookAdmin页面上,我想显示Book of Book。所以在list_display字段中我有:

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

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

如果我不包含“作者”,则只有5个查询(类似于此)。

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

我的问题是,无论如何都要减少处理外键时执行的查询数量?

我不想执行任何复杂的操作。我只想在该外键模型中调用 unicode ()方法。

提前致谢

1 个答案:

答案 0 :(得分:1)

好吧,我自己发现了。

这样做的方法是覆盖BookAdmin类中的 queryset()

像:

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

就是这样。 Django将在加载Book的同时加载作者。因此,只有数据库命中而不是超过100次点击。