Python 多对多和Q上的django滤波器

Python 多对多和Q上的django滤波器,python,django,django-models,django-q,Python,Django,Django Models,Django Q,我们可以使用以下方法获取m2m1对象: class ModelA: m2m1 = Foreignkey relatedname = 'm2ms' 样本输出: modela_instance.m2ms.all() 因此,如果我想获取其m2ms具有ID 1、2、3的所有实例(也可以有更多)。然后我可以这样做: for x in ModelA.objects.all(): print x.m2ms.all().values_list('id', Flat=True) 1,2,3

我们可以使用以下方法获取m2m1对象:

class ModelA:
    m2m1 = Foreignkey relatedname = 'm2ms'
样本输出:

modela_instance.m2ms.all()
因此,如果我想获取其m2ms具有ID 1、2、3的所有实例(也可以有更多)。然后我可以这样做:

for x in ModelA.objects.all():
    print x.m2ms.all().values_list('id', Flat=True)

1,2,3
1,
[]
2
4,5
我怎样才能用Q做到这一点

ModelA.objects.filter(m2ms__id=1).filter(m2ms__id=2).filter(m2ms__id=3)
根据上述要求,我的意思是:

当(一些布尔值=True,简单字段=5)或一些布尔值=False,m2ms应该有1,2,3(可以有更多)时,它应该返回记录

输出:

ModelA.objects.filter(Q(some_boolean=True, simple_field=5) | Q(some_boolean=False, here m2ms should be 1,2,3 lets say))  

请让我知道更多的澄清。

所以,只有你知道:英语不是我的第一语言,但我的印象是,即使是以英语为母语的人也很难理解你的意思。您能否编写等效的SQL查询,以便我们了解您的需求?@PauloScardine更新英语,请再次查看。
If some_boolean=True, then we dont bother about m2ms. These records should have simple_field with value 5
If some_boolean=False, then for all records, each_record.m2ms.all().values_list('id', Flat=True) should contains 1,2,3. For example: 1)[1,2,3], 2)[1,2,3,4], 3)[1,2,3,5,6,7]