django延迟相关模型查询集中的所有字段
我有一个需要第二个相关模型的查询django延迟相关模型查询集中的所有字段,django,django-queryset,Django,Django Queryset,我有一个需要第二个相关模型的查询 Model1.objects.all()。选择相关(“model2\uu model3”) 但是我不需要model2中的任何字段,只需要model3中的许多不同字段,例如obj.model2.model3.name和其他字段 我怎样才能延迟model2中的所有字段,而不逐个明确地提及它们 编辑:Model1的ForeignKey指向Model2,而Model3的ForeignKey指向Model3。我相信您正在尝试使用queryset方法,下面的代码片段应该可以
Model1.objects.all()。选择相关(“model2\uu model3”)
但是我不需要model2中的任何字段,只需要model3中的许多不同字段,例如obj.model2.model3.name
和其他字段
我怎样才能延迟model2中的所有字段,而不逐个明确地提及它们
编辑:Model1的ForeignKey指向Model2,而Model3的ForeignKey指向Model3。我相信您正在尝试使用queryset方法,下面的代码片段应该可以工作 根据django文件: 惟一的()方法或多或少与defer()相反。您可以使用检索模型时不应延迟的字段来调用它。如果您有一个几乎所有字段都需要延迟的模型,那么只使用()来指定互补的字段集可以产生更简单的代码
Model1.objects.all()
在上面的代码段中,尝试从model2
访问任何字段都会导致数据库访问,而访问model2.model3.name
则不会
这样,
model2
中的所有字段都将被延迟。如果您想访问另一个字段,只需将其传递给.only()
函数.only('model2\uu model3\uu name','model2\uu model3\uu other')
可能有更好的方法。它们之间的关系是什么?为什么不在引用model3
的model1
中添加一个外键呢?@monica我不认为这是个问题,我的答案很容易解决。我在下面发布了一个答案,请查看!