【问题标题】:django admin additional field on changelist page更改列表页面上的 django admin 附加字段
【发布时间】: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() 方法。

提前致谢

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    嗯,我自己发现了。

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

    喜欢:

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

    就是这样。 Django 将在加载 Book 的同时加载 Author。所以只会有数据库命中而不是超过 100 次命中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 2020-12-08
      相关资源
      最近更新 更多