Django Query:按名称获取相关对象的频率

时间:2016-04-05 21:17:57

标签: django

我有一个评级对象列表,其中每个评级都与一个标准相关联

我正在尝试编写一个Query来返回每个给定StudySpace的投票数分类

e.g。

  • 数学室:10
  • 物理室:2
  • 艺术室:9

我试过并提出以下建议:

studyspace_rating_breakdown = ratings.values('studyspace').annotate(num_votes=Count('studyspace')).order_by('-num_votes')[:3]

然而,这会返回studyspace的id。

[{'studyspace': 8, 'num_votes': 421}, {'studyspace': 7, 'num_votes': 91}, {'studyspace': 2, 'num_votes': 2}]

有没有办法可以修改查询以返回studyspace名称字段而不是ID?

我不想写模板标签从模板中的ID中查找studyspace名称

模特本身:

class StudySpace(models.Model):
    department = models.ForeignKey(Department, on_delete=models.CASCADE)
    space_name = models.CharField(max_length=200, unique=True)
    ...


class Rating(models.Model):
    studyspace = models.ForeignKey(StudySpace, on_delete=models.CASCADE)
    student = models.ForeignKey(Student, on_delete=models.CASCADE)
    rating = models.IntegerField(default=3)
    ...

1 个答案:

答案 0 :(得分:0)

试着在评论部分提出答案,你可以很容易地做到:

ratings.values('studyspace', 'studyspace__space_name')

显示相关字段。有关详细信息,请查看values的django query api。