在管理面板中为所有用户注释Django查询

时间:2016-02-22 22:21:55

标签: django

我有这样的查询:

user.ihaveinvited.all().filter(current_status='passive').values('id').distinct()

获取具有特定状态的所有不同用户。我想将其应用于以下内容:

def get_queryset(self, request):
    qs = super(UserAdmin, self).get_queryset(request)
    qs = qs.annotate(uniq_passive_invites=ALLUSERS.ihaveinvited.all().filter(current_status='passive').values('id').distinct()

所以问题是将所有用户的查询作为查询集运行吗?

1 个答案:

答案 0 :(得分:1)

我看了另一个question you posted,他们似乎密切相关。使用过滤器添加计数需要更多的工作,但可以实现。

def get_queryset(self, request):
    qs = super(UserAdmin, self).get_queryset(request)
    qs = qs.annotate(count=Sum(
        Case(
            When(ihaveinvited__invitee__current_status='passive', then=1),
            default=0,
            output_field=models.IntegerField()
        )
    ))
    return qs