Python 相互影响的Django注释(最大/计数)

Python 相互影响的Django注释(最大/计数),python,django,Python,Django,我在查询集中使用Django注释观察到奇怪的行为 只要我只计算子对象的数量,一切都很好: >>> myqs = Parent.objects.all().annotate(num_children=Count('children)) >>> myqs.first().num_children 4 当我使用Max添加关于一些子属性的第二个注释时,计数的数字似乎发生了变化。显然,这与身份的数量有关 >>> myqs = Parent.objec

我在查询集中使用Django注释观察到奇怪的行为

只要我只计算子对象的数量,一切都很好:

>>> myqs = Parent.objects.all().annotate(num_children=Count('children))
>>> myqs.first().num_children
4
当我使用Max添加关于一些子属性的第二个注释时,计数的数字似乎发生了变化。显然,这与身份的数量有关

>>> myqs = Parent.objects.all().annotate(num_children=Count('children)).annotate(status=Max('children__status__color'))

>>> myqs.first().num_children
8
这是怎么回事?如何获得预期的行为(结果=4)


Edit添加Count(,distinct=True)解决了这个问题,但在我看来,这些值首先应该是不同的。

使用子查询。这是一种解决方法(就像我自己的解决方案一样)。但在我看来,这个问题一开始就不应该出现。这不是一个真正的问题<代码>导致连接。连接到多个匹配行“重复”源行。谢谢,我一定错过了使用子查询。这是一个解决方法(就像我自己的解决方案)。但在我看来,这个问题一开始就不应该出现。这不是一个真正的问题<代码>导致连接。加入多个匹配行“重复”源行。谢谢,我一定错过了