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



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

但我不需要模型2中的任何字段,只需要模型3中的许多不同字段,例如obj.model2.model3.name和其他

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

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

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

根据django文档:

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

Model1.objects.all().only('model2__model3__name').select_related("model2__model3")

在上面的代码段中,尝试访问model2中的任何字段都会导致数据库访问,而访问model2.model3.name则不会。

这样一来,model2中的所有字段都将被延迟。如果您想访问另一个字段,只需将其传递给.only()函数.only('model2__model3__name', 'model2__model3__another')即可。

最新更新