class ModelA:
m2m1 = Foreignkey relatedname = 'm2ms'
我们可以得到使用m2m1对象:
modela_instance.m2ms.all()
输出示例:
for x in ModelA.objects.all():
print x.m2ms.all().values_list('id', Flat=True)
1,2,3
1,
[]
2
4,5
所以,如果我想要获取其m2ms具有IDS 1,2,3的所有实例(可以有更多的太)。 然后,我可以这样做:
ModelA.objects.filter(m2ms__id=1).filter(m2ms__id=2).filter(m2ms__id=3)
我怎样才能做到这一点符合Q?
ModelA.objects.filter(Q(some_boolean=True, simple_field=5) | Q(some_boolean=False, here m2ms should be 1,2,3 lets say))
从上面的要求,我的意思是:
它应该返回记录时(some_boolean =真,simple_field = 5)或some_boolean =假m2ms应该有1,2,3(可以有更多的)。
输出:
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]
请让我知道更多的澄清。