Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django延迟相关模型查询集中的所有字段_Django_Django Queryset - Fatal编程技术网

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我不认为这是个问题,我的答案很容易解决。我在下面发布了一个答案,请查看!