有时候靠单一的关键字参数查询已经很难满足查询要求,此时就需要ORM的F和Q查询。
导入
from django.db.models import F |
F查询
F查询——专门取对象中某列值的操作,不可使用__双下划线
# 对于book表中每本书的价格都在原价格的基础上增加20元 |
取到Book书中price一列值,并对每个值进行+20的操作
Q查询
Q查询——对对象的复杂查询
filter() 等方法中的关键字参数查询都是相当于进行“AND” 操作的。 如果你需要执行更复杂的查询(例如OR语句),你可以使用Q对象。
关键字封装
#1 Q对象可以对关键字参数进行封装,从而更好地应用多个查询 |
使用操作符
# 可以组合使用&,|操作符,当一个操作符是用于两个Q的对象,它产生一个新的Q对象。 |
可使用Q对象的方法
- filter()
- exclude()
- get()
注意事项
Q对象可以与关键字参数查询一起使用,不过一定要把Q对象放在关键字参数查询的前面。
# 正确: |