Subscribe:

2012/10/11

ANDとORが混在したQオブジェクトを動的に作成

# こんなQオブジェクトを作成したい場合
obj = hoge.objects.filter(Q(a=1,b=2)|Q(a=2,b=3))

# AND部分は「&=」で繋げていく
# ※「query = Q(a=1),Q(b=2)」とすると別物になるので注意
query1  = Q(a=1)
query1 &= Q(b=2)
query2  = Q(a=2)
query2 &= Q(b=3)
# OR部分を繋げる
query1 |= query2

# 作成したQオブジェクトを実行
obj = hoge.objects.filter(query1)

0 件のコメント: