Python全系列 教程
3567个小节阅读:5930.1k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
filter() 等方法中的关键字参数查询都是并且('AND')的, 如果需要执行更复杂的查询(例如or语句),那么可以使用django.db.models.Q
对象。
Q 对象 (django.db.models.Q) 对象用于封装一组关键字参数,可以使用 & 和 | 操作符组合起来,当一个操作符在两个Q 对象上使用时,它产生一个新的Q 对象。
注意
- Q对象可以和一般的关键字参数混用, 但是Q对象必须在一般关键字参数的前面
- Q对象可以多个同时使用
- Q对象前面可以增加~用于取反
xxxxxxxxxx
from food_app.models import Cook
# 查询等级为5的数据
Cook.objects.filter(level=5)
# 查询等级为5,并且派系为川菜的数据
Cook.objects.filter(level=5,sect="川菜")
# 查询等级为5,并且派系为川菜的数据
Cook.objects.filter(level=5).filter(sect="川菜")
# 查询等级为6,或者派系为湘菜的数据,不支持这个写法!!!
Cook.objects.filter(level=6 or sect="湘菜")
# 查询等级为6,或者派系为湘菜的数据,不支持这个写法!!!
Cook.objects.filter(level=6 | sect="湘菜"))
from django.db.models import Q
# 查询等级为6,或者派系为湘菜的数据
Cook.objects.filter(Q(level=6) | Q(sect="湘菜"))
# 查询等级为6,并且派系为湘菜的数据
Cook.objects.filter(level=6,sect="湘菜")
# 查询等级4,并且等级为6,或者派系为湘菜的数据
Cook.objects.filter(Q(id=4),Q(level=6) | Q(sect="湘菜"))
# 查询等级不为4,并且等级为6,或者派系为湘菜的数据
Cook.objects.filter(~Q(id=4),Q(level=6) | Q(sect="湘菜"))
# 查询等级4,并且等级为6,或者派系为湘菜的数据
Cook.objects.filter(Q(level=6) | Q(sect="湘菜"),id=4)
# 查询等级4,并且等级为6,或者派系为湘菜的数据,不支持这个写法!!!
Cook.objects.filter(id=4,Q(level=6) | Q(sect="湘菜"))
实时效果反馈
1. 关于Django,Q对象说法错误的是?
A Q对象解决多个条件逻辑或查询
B Q对象中可以直接使用字段设置查询条件
C Q对象可用于逻辑与查询
D Q对象不能与关键字参数一起使用
答案
1=>D