django使用Q来实现动态可变条件的或查询
from django.db.models import Q
1.固定条件的或查询
>>> User.objects.filter(Q(is_staff=True) | Q(username='123'))
[<User: staff_a>, <User: 123>, <User: staff_b>]
2.对于动态可变条件的或查询
代码示例:
>>> di = {'username': '123', 'is_staff': True} # 条件不固定
>>> q = Q()
>>> for i in di:
... q.add(Q(**{i: di[i]}), Q.OR)
...
<django.db.models.query_utils.Q object at 0x103a84bd0>
<django.db.models.query_utils.Q object at 0x103af1110>
>>> print q
(OR: (AND: ), (AND: ('username', '123')), ('is_staff', True))
>>> User.objects.filter(q)
[<User: staff_a>, <User: 123>, <User: staff_b>]

浙公网安备 33010602011771号