Django-数据库操作之F和Q对象

2022-09-03  本文已影响0人  测试探索

一、F对象

之前的查询都是对象的属性与常量值比较,两个属性要如何比较呢?可以使用F对象,被定义在django.db.models中。
在子应用book/views.py文件中
查询阅读量大于等于评论量的图书

from django.db.models import F
# 使用:2个属性的比较
# 语法形式:以filter  为例 模型类名.objects.filter(属性名__运算符 = F("第二个属性"))

# 查询阅读量大于等于评论量的图书
BookInfo.objects.filter(readcount__gte = F('commentcount'))
image.png

二、Q对象

多个过滤器逐个调用表示逻辑与关系,同sql语句中where部分的and/or关键字

# 并且查询
# 查询阅读量大于20,并且编号小于3的图书
# 第一种表达方式
BookInfo.objects.filter(readcount__gt = 20).filter(id__lt = 3)
# 第二种表达方式
BookInfo.objects.filter(readcount__gt = 20,id__lt = 3)

# 或者查询
from django.db.models import Q

# 或者语法:模型类名.objects.filter(Q(属性名__运算符 = 值)|Q(属性名__运算符 = 值))
# 并且语法:模型类名.objects.filter(Q(属性名__运算符 = 值)& Q(属性名__运算符 = 值))

# 查询阅读量大于20或者id小于3的数据
BookInfo.objects.filter(Q(readcount__gt = 20) | Q(id__lt = 3))

# Q对象前可以使用~操作符,表示非not
# 查询编号不等于3的图书
BookInfo.objects.filter(~Q(id = 3))
image.png
上一篇 下一篇

猜你喜欢

热点阅读