views.py中
导入需要的包
from django.db.models import Avg, Count,Max, Min, Sum, F, Q
自定义一个函数
def func1(request):
# 聚合查询 aggregate
# rs = Stu_detail.objects.all().aggregate(Avg('s_age'))
# rs1 = Stu_detail.objects.all().aggregate(Count('s_age'))
# rs2 = Stu_detail.objects.all().aggregate(Sum('s_age'))
# rs3 = Stu_detail.objects.all().aggregate(Max('s_age'))
# rs4 = Stu_detail.objects.all().aggregate(Min('s_age'))
#
# print(rs, rs1, rs2, rs3, rs4)
# 分组查询 annotate 学院对学生:一对多 一个学院有多少学生 count = Count('department'):是将显示的结果的key值修改为自己定义的
# rs = Student.objects.values('department').annotate(count111 = Count('department'))
# print(rs)
# 分组查询 annotate 课程对学生:多对多 一门课程有多少学生
# rs = Course.objects.all().annotate(count11111 = Count('student')).values('c_name', 'count11111')
# print(rs)
# 一名学生有多少门课程
# rs = Student.objects.all().annotate(count11111=Count('course')).values('s_id' ,'s_name', 'count11111')
# print(rs)
# F查询
# 查询出学院id 小于 学生id 的结果 比较两个字段
# rs = Student.objects.filter(department_id__lt=F('s_id'))
# print(rs)
# 给所有的age+1
# rs = Stu_detail.objects.all().update(s_age=F('s_age')+1)
# print(rs)
# Q查询 &并且 |或者 ~取反
rs = Stu_detail.objects.filter(Q(student__s_name='林羽') & ~Q(s_age=5))
print(rs)
return HttpResponse('查询成功')
django模型的聚合查询,分组查询,F查询,Q查询
最新推荐文章于 2022-10-12 11:28:52 发布