Джанго Аннотации, влияющие друг на друга (Макс / Количество) - PullRequest
1 голос
/ 24 июня 2019

Я наблюдал странное поведение, используя аннотацию 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)?

Редактировать добавление Count (, Different = True ) решает проблему, но, на мой взгляд, эти значения должны быть различны в первую очередь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...