我有一个查询,需要第二个相关模型Model1.objects.all().select_related("model2__model3")
但是我不需要来自model2的任何字段,只需要来自model3的许多不同字段,例如obj.model2.model3.name
和其他
我如何从model2推迟所有字段,而又不一个接一个地明确提及它们?
编辑:Model1具有对Model2的ForeignKey,而对Model3具有ForeignKey
[我相信您正在尝试使用.only()
queryset方法,下面的代码段应该可以使用。
根据django文档:
only()方法或多或少与defer()相反。您可以使用检索模型时不应推迟的字段来调用它。如果您有一个模型,其中几乎所有字段都需要延迟,则使用only()指定互补的字段集可以简化代码。
.only()
使用以上代码段,尝试访问Model1.objects.all().only('model2__model3__name').select_related("model2__model3")
中的任何字段都将导致数据库访问,而访问model2
则不会。
这样,model2.model3.name
中的所有字段都会被延迟。如果要访问另一个字段,只需将其传递给model2
函数.only()
。