我如何使用注释按父模型对子模型进行分组?

How do i use annotate to group the child models by the parent models?

我有 3 个模型。同行评审答复和声明。同行评审有很多答案,每个答案都属于一个陈述(如果你愿意,也可以是一个问题)

我想要的是从所有 PeerReviews 中按他们的陈述分组得到所有答案。所以最终结果应该是一个字典,其中键是一个语句对象,值是该特定语句的所有答案的列表。如果你把它打印出来,它看起来像这样:

{Statement A : [answer, answer, answer], Statement B : [answer,answer,answer], Statement C : etc etc}

我知道对于分组查询,我应该使用 annotate() 方法,但我找到的所有示例都是关于计数和求和操作的。结果我如何使用注释来获取上述字典?

谢谢

如果我理解你想要什么,你需要使用反向外键关系。

statements = Statement.objects.prefetch_related('answer_set__peer_review')

如果你需要一本字典,那么这样做就可以了:

mapping = {s: list(s.answer_set.all()) for s in statements}