我有一个“对话”经理,看起来像这样:
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),
)
投票和评论有一个外键到对话框。评论对用户有一个外键。当我这样做时:
dialogs_queryset = Dialog.public.filter(organization=organization)
dialogs_popularity = dialogs_queryset.exclude(num_comments=0) | dialogs_queryset.exclude(num_votes=0)
...dialogs_popularity 永远不会返回组合,而只会返回超过 0 条评论的对话框,或者如果我更改 OR 的顺序,则返回超过 0 票的对话框!
对我来说,预期的行为将是获得超过 0 票的对话和超过 0 条评论的对话。
我错过了什么?还是这里的注释行为有错误?