QuerySet对象实例
前面几章学习了QuerySet对象的很多方法,在实际场景中可能需要几个不同的方法相互调用,才能实现最终的需求,特别是在根据多个表关系来查询数据时。所以要做到灵活的使用的话,还是需要多练习
模型类
后面会介绍几个实际例子,所有例子都是基于下面几个模型类来实现的
例1:
⑴模型类
⑵查看数据:学生表
⑶查看数据:老师表
⑷查看数据:课程表
⑸查看数据:成绩表
查询每科平均成绩大于60分的同学和其平均成绩
例2:使用自己的方法
# -*- coding: utf-8 -*-
from django.http import HttpResponse
from polls.models import Student,Score,Course,Teacher
from django.db import models
from django.db import connection
def index(request):
#查询每科平均成绩大于60分的同学和其平均成绩
score_avgs = Student.objects.annotate(score_avg=(models.Avg("score__score")))#查询每个学生的平均成绩
print(score_avgs)
students_list = []
scores_avg_list = []
for students_avg in score_avgs:#对返回的QuerySet进行遍历:返回模型类
print(students_avg)
print(students_avg.score_avg)
if students_avg.score_avg >= 60:#依次判断每个模型类下面的score_avg属性值是否>=60
students_list.append(students_avg.name)#获取score_avg属性值是否>=60数据中的name属性值(因为是从Student模型类开始查询的,因此会返回Student表中的数据)
scores_avg_list.append(students_avg.score_avg)
else:
pass
student_score_dicts = dict(zip(students_list,scores_avg_lis