所以我有queryset1用2个参数过滤ModelA:
queryset1 = ModelA.objects.all().filter(par1="X",par2="Y")
然后我有另一个queryset2,我想通过抓取已经被queryset1过滤的元素来过滤ModelB,并且还要跟随另一个参数:
queryset2 = ModelB.objects.all().filter(par3="X" for i in queryset,par4="Z")
我的问题是: 有没有办法在已经创建的查询集上执行查询集? 最后,我想从ModelA和ModelB中拉出par1 par2 par3之后的对象。我该怎么做?
答案 0 :(得分:1)
你能做的是:
当par3
是同一类型relation
的{{1}}时:
queryset1
当queryset2 = ModelB.objects.all().filter(par3__in=queryset1, par4="Z")
不是values_list('some_field', flat=True)
part3
表示法
relation
答案 1 :(得分:1)
queryset2 = ModelB.objects.all().filter(par3__in=queryset,par4="Z")
这会产生一个子查询,如https://docs.djangoproject.com/en/1.9/ref/models/querysets/
所述您还可以使用查询集动态评估值列表 而不是提供文字值列表:
SELECT * FROM app_modelb where par3 IN (SELECT ...)