Я наблюдал странное поведение, используя аннотацию 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 ) решает проблему, но, на мой взгляд, эти значения должны быть различны в первую очередь.