Django对ForeignKey的聚合计数返回相同ID的多条记录

0 投票
1 回答
575 浏览
提问于 2025-04-16 18:55

这个模型的结构是:一个问题对应一个视频,一个问题可以有多个答案。

现在遇到的问题是:

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',你应该能得到你想要的结果。

撰写回答