【发布时间】:2013-11-25 10:57:44
【问题描述】:
我正在使用 django 1.5.5 和 Mysql
我有这个模型
class Student(models.Model):
username = models.CharField(max_length=200,unique = True)
class Score(models.Model)
student = models.ForeignKey(Student)
date = models.DateTimeField()
score = models.IntegerField()
我想获取所有分数为 0 的记录,并且同一学生还有另一个 0。
我尝试过的:
scores = Score.objects.annotate(score_count = Count('student__id')).filter(score = 0 , score_count__gt = 1)
我尝试过的另一件事是我认为确实可以满足我的需求,但需要 2 个查询。
students = Score.objects.filter(score = 0).values('student__id').annotate(c=Count('student__id')).filter(c__gt=1).values_list('student__id',flat=True)
score = Score.objects.filter(score = 0 , student__id__in = students)
有什么方法可以在一个查询中完成吗?
【问题讨论】:
-
Score.objects.values('student__id').filter(score=0).annotate(c=Count('score')).filter(c__gt=1)?? -
@AamirAdnan 这只会给我值而不是分数记录。
标签: python django orm annotations