1
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 の ID が 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=True, simple_field=5) OR some_boolean=False, 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]

より明確にするために私に知らせてください。

4

0 に答える 0