我想知道是否有办法在Django管理显示列表中添加两列,包括活跃用户数和非活跃用户数,如下所示:
class UserAdmin(django.contrib.admin.ModelAdmin):
list_display = ('name', 'num_active_user', 'num_non_active_user', )
def num_users(self, obj):
return obj.num_users
num_users.short_description = "Number Of Users"
num_users.admin_order_field = 'num_users'
def get_queryset(self, request):
qs = super(UserAdmin, self).get_queryset(request)
return qs.annotate(num_users=Count('user', distinct=True))
有没有办法在这一行添加条件:
return qs.annotate(num_users=Count('user__is_active=True', distinct=True))
答案 0 :(得分:0)
我使用以下技巧解决它:
return qs.annotate(nnum_active_users=django.db.models.Count(django.db.models.Case(django.db.models.When(
user__is_active=True, then=1, ))
)
)