Django查询之—— Q查询
Q查询
作用: filter的字段筛选条件指定多个, 默认是and连接. 要实现or或者not需要借助Q查询
首先要导入模块
from django.db.models import Q
Q(字段__条件=值)
连接条件:and or not
# and的3种情况 1. filter中指定多个参数逗号隔开: filter(参数1, 参数2) 2. 查询指定多个逗号隔开: filter(Q(), Q()) 3. 使用&连接符: filter(Q() & Q())
# 连接条件or filter(Q() | Q())
# 连接条件not filter(~Q() | Q())
Q的高阶用法:
能够将查询条件的左边变量的形式变成字符串的形式
q = Q() # 第一步: 实例化一个q对象 q.connector = 'or' # 第二步: 定义连接条件 q.children.append(('sale__gt', 100)) # 第三步: 指定字符串形式的查询字段条件, 以及范围100 q.children.append(('price__lt', 600)) res = models.Book.objects.filter(q) # 第四步: 将q对象传入filter print(res)