变更列表页面上的django admin附加字段

变更列表页面上的django admin附加字段,django,django-admin,Django,Django Admin,我相信这是一个一般性的问题 假设我有一个模型叫Book,另一个模型叫Author。作者是这本书的外键 轻松点,哈 在BookAdmin页面上,我想显示该书的作者。因此,在列表显示字段中,我有: list_display = ('book_name', 'author'.....) 然后,我使用django调试工具栏检查加载页面时执行的查询数。 已经执行了大约100多个查询。(我在同一页上有100本书) 如果我不包括“author”,那么只有5个查询(类似的) 我知道额外的查询来自外键 我的问题

我相信这是一个一般性的问题

假设我有一个模型叫Book,另一个模型叫Author。作者是这本书的外键

轻松点,哈

在BookAdmin页面上,我想显示该书的作者。因此,在列表显示字段中,我有:

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

如果我不包括“author”,那么只有5个查询(类似的)

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

我的问题是,在处理外键时,有没有办法减少执行的查询数量

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


提前谢谢

嗯,是我自己发现的

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

比如:

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

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