我们可以使用符号&或者|将多个Q()对象组合起来传递给filter(),exclude(),get()等函数。当多个Q()对象组合起来时,Django会自动生成一个新的Q()。
传Q对象,构造搜索条件
传入条件进行查询:
1 from django.db.models import Q 2 q1 = Q() 3 q1.connector = 'OR' 4 q1.children.append(('id', 1)) 5 q1.children.append(('id', 2)) 6 q1.children.append(('id', 3)) 7 8 models.Tb1.objects.filter(q1)
合并条件进行查询:
1 con = Q() 2 3 q1 = Q() 4 q1.connector = 'OR' 5 q1.children.append(('id', 1)) 6 q1.children.append(('id', 2)) 7 q1.children.append(('id', 3)) 8 9 q2 = Q() 10 q2.connector = 'OR' 11 q2.children.append(('status', '在线')) 12 13 con.add(q1, 'AND') 14 con.add(q2, 'AND') 15 16 models.Tb1.objects.filter(con)