Группировка Django по неверному результату после фильтрации по аннотированному полю - PullRequest
0 голосов
/ 15 января 2019

Итак, я в основном хочу сгруппировать по своему результату по определенному полю, которое, как я знаю, я могу сделать, например

ModelName.objects.values('somefield').annotate(freq=Count('somefield'))

Но до этого я хочу фильтровать по одному аннотированному полю, но это дает неверный результат, я пытался,

# Works fine
filtered_queryset = ModelName.objects.annotate(c=Count('related_field')).filter(c__gt=0)
# Yields wrong result.
filtered_queryset.values('somefield').annotate(freq=Count('somefield')) 

Я попытался передать distinct=True, но это не решило мою проблему. Почему я здесь скучаю?

1 Ответ

0 голосов
/ 16 января 2019

Случайно ли у вас есть определенный ModelName.Meta.ordering?

Если это так, то вам нужно order_by(), чтобы очистить его, иначе ссылочные столбцы также будут включены в предложение GROUP BY.

Между прочим, это обычный леггинс, о котором в Django 2.2 будут предупреждены и удалены в Django 3.1 .

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