django延迟相关模型查询集中的所有字段

问题描述 投票:1回答:1

我有一个查询,需要第二个相关模型Model1.objects.all().select_related("model2__model3")

但是我不需要来自model2的任何字段,只需要来自model3的许多不同字段,例如obj.model2.model3.name和其他

我如何从model2推迟所有字段,而又不一个接一个地明确提及它们?

编辑:Model1具有对Model2的ForeignKey,而对Model3具有ForeignKey

django django-queryset
1个回答
1
投票

[我相信您正在尝试使用.only() queryset方法,下面的代码段应该可以使用。

根据django文档:

only()方法或多或少与defer()相反。您可以使用检索模型时不应推迟的字段来调用它。如果您有一个模型,其中几乎所有字段都需要延迟,则使用only()指定互补的字段集可以简化代码。

.only()

使用以上代码段,尝试访问Model1.objects.all().only('model2__model3__name').select_related("model2__model3") 中的任何字段都将导致数据库访问,而访问model2则不会。

这样,model2.model3.name中的所有字段都会被延迟。如果要访问另一个字段,只需将其传递给model2函数.only()

© www.soinside.com 2019 - 2024. All rights reserved.