【问题标题】:Avoid 1+n queries in Django admin list view在 Django 管理列表视图中避免 1+n 查询
【发布时间】:2019-10-27 18:55:02
【问题描述】:

我有一个 Django 模型:

class Book(models.Model):
    author = models.ForeignKey(Author, on_delete=models.PROTECT)

    @property
    def slug(self):
        return slugify(self.author.name)

现在如果我将slug 字段添加到管理员list_display,每个实例都会有一个单独的查询。

如何只对所有实例进行一次查询?

我尝试在ModelAdmin 类中使用select_related,但没有成功。

【问题讨论】:

  • 不,不会。只有当 title 是 ForeignKey 时才会发生这种情况。
  • 谢谢!是的,你是对的。我没有修改我的问题以包含外键。

标签: django django-admin


【解决方案1】:

您可以覆盖 ModelAdmin 的 get_queryset() 以添加您的 select_related。


    def get_queryset(self, request):
        return super().get_queryset(request).select_related('author')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    相关资源
    最近更新 更多