避免Django管理列表视图中的1+n查询



我有一个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,但没有成功。

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


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

还有listrongelect_related选项,我认为它更直接。

class BookAdmin(admin.ModelAdmin):
list_select_related = ['author']

最新更新