Django对ForeignKey的聚合计数返回相同ID的多条记录
这个模型的结构是:一个问题对应一个视频,一个问题可以有多个答案。
现在遇到的问题是:
questions = Question.objects\
.values('id', 'answer', 'section__title', 'title', 'created_at','user__username')\
.filter(video=v).annotate(answer_count=Count('answer'))
我在使用Count这个聚合函数,想要加一个额外的字段来显示一个问题有多少个答案。
当答案数量为零或一个时,这个方法运行得很好。但是如果一个问题有三个答案,我得到的结果却是三行数据,每行的ID都是一样的,answer_count=1,而'answer'字段的ID却不同。
我哪里做错了呢?
1 个回答
1
我不太清楚你的模型定义是什么。我猜你的模型可能是这样的:
class Answer(models.Models):
question = models.ForeignKey(Question, related_name='answer')
当你按照你描述的方式查询时,每个答案会返回一行数据。如果你在 values
调用中去掉 'answer'
,你应该能得到你想要的结果。