我有一个使用两种模型保存学生测验的应用程序:保存
StudentQuiz
学生被问到的问题,
StudentQuestion
保存学生对每个问题的回答。
class StudentQuestion(models.Model):
user = models.ForeignKey(User)
question = models.ForeignKey('Question') # comes from a Questions table
answer = models.CharField("Answer", max_length = 100, blank=True, null=True)
q_score = models.IntegerField("Score", blank=True, null=True)
class StudentQuiz(models.Model):
user = models.ForeignKey(User)
date = models.DateField("Quiz Date", blank=True, null=True)
total_score = models.IntegerField("Score", blank=True, null=True)
ques1 = models.ForeignKey(StudentQuestion, related_name='q1')
ques2 = models.ForeignKey(StudentQuestion, related_name='q2')
ques3 = models.ForeignKey(StudentQuestion, related_name='q3')
ques4 = models.ForeignKey(StudentQuestion, related_name='q4')
ques5 = models.ForeignKey(StudentQuestion, related_name='q5')
我想找出一个学生在特定日期范围内回答的问题数量,例如,他获得了 1 分。
所以我创建了第一个查询集:
quizzes_done = StudentQuiz(user=mystudent, date__gte=start_date, date__lte=end_date)
现在,我想查看这些问题中的所有问题,StudentQuizzes
并想计算有q_score = 1
.
目前,我只是在 QuerySet 上循环并以编程方式执行此操作。但是 QuerySet 可能很大。
有没有办法使用 django 的 DB API 来做到这一点?