У меня есть менеджер для «Диалог», который выглядит так:
class AnnotationManager(models.Manager):
def get_query_set(self):
return super(AnnotationManager, self).get_query_set().annotate(
num_votes=Count('vote', distinct=True),
num_comments=Count('comment', distinct=True),
num_commentators = Count('comment__user', distinct=True),
)
Голоса и комментарии имеют ForeignKey to Dialog. Комментарии имеет ForeignKey для пользователя. Когда я делаю это:
dialogs_queryset = Dialog.public.filter(organization=organization)
dialogs_popularity = dialogs_queryset.exclude(num_comments=0) | dialogs_queryset.exclude(num_votes=0)
... dialogs_popularity никогда не вернет комбинацию, а только диалоги с более чем 0 комментариями или, если я изменю порядок ИЛИ, диалоги с более чем 0 голосами!
Для меня ожидаемым поведением было бы получение диалогов с более чем 0 голосами И диалогов с более чем 0 комментариями.
Чего мне не хватает? Или здесь есть ошибка в поведении аннотации?