Q查询
# 1.引入包
from django.db.models import Q
语法: Q(字段名_运算符=值) 或Q()|Q() 且q()&Q()
#2.查询语句使用即可
ischeck = '1'
name = '123'
querylist = Member.objects.filter(Q(ischecklm=ischeck) & (Q(name=name) | Q(phone=name))).exclude(talent_id="")
正常查询
# 查询包含'部'的图书
BookInfo.objects.filter(name_contains = '部')
# 查询书名以'部'结尾的图书
BookInfo.objects.filter(name_endswith = '部')
# 查询编号以'1,3,5'的图书
BookInfo.objects.filter(id_in= [1,3,5])
# 查询编号大于'3'的图书,gt 大于 gte 大于等于 lt小于 lte小于等于
BookInfo.objects.filter(id_gt= 3)
# 查询编号不等于'3'的图书
BookInfo.objects.filter(id_exact= 3)
F操作
F对象的语法形式,两个属性间的比较
filter(字段名—运算符=F('字段名'))
# 查询阅读量大于等于评论量的图书
from django.db.models import F
BookInfo.objects.filter(readcount_get=F('commentcount'))
一对多查询
# 书籍与人 1:n
# 书籍中没有关于人物的字段,人物中有关于 book 外键
# 语法 主表模型.关联模型类名小写_set
class peopleinfo(models.Model):
'''
book = models.ForeignKey(BookInfo,on_delete=models.CSSCADE,verbose_name='外键')
'''
# 查询书籍为1的所有人物信息
book = BookInfo.objects.get(id=1)
book.peopleinfo_set.all() #获取所有信息
# 查询人物为1的书籍信息
person = PeopkeInfo,objects.get(id=1)
person.book #实例对象
聚合函数
# 语法形式:aggregate(Xxx('字段'))
from django.db.models import Sum,Avg,Max,Min,Count
BookInfo.objects.aggregate(Sum(''))