Django———数据查询 F 对象与 Q 对象

Q对象

Q对象是Django对model查询中所使用的关键字参数进行封装后的一个对象。
Q对象可以通过 &(与)、 |(或)、 ~(非)运算来组合生成不同的Q对象,便于在查询操作中灵活地运用。

比如,对一个记录书籍信息的 BookInfo 表进行一些查询操作:

from django.db.models import Q

#查询作者是 小明 或 作者姓名包含 红 的书籍
ret1 = BookInfo.objects.filter(auth="小明")
ret2 = BookInfo.objects.filter(auth__contains="红") 
#使用Q对象进行查询
q = Q(Q(name="小明")|Q(name__contains="红"))
ret = BookInfo.objects.filter(q)
#!!如果在查询时同时传入关键字参数与Q对象,需要将关键字参数放在最后面

F对象

F对象通常是对数据库中的字段值在不获取的情况下进行操作

比如说小明火了,我们对他的书都涨价10元

all = BookInfo.objects.filter(auth="小明")
for b in all:
    price = b.price
    b.price = price + 10
    b.save
# 使用F对象来计算
BookInfo.objects.filter(auth="小明").update(price=F("price")+10)

猜你喜欢

转载自blog.csdn.net/qq_37049781/article/details/80931680