gue*_*tli 7 django orm django-models
我有一个auth.User模型的QuerySet.
我想知道:哪些组是包含大多数这些用户的组.
示例:我有三个组,这些用户:
User-QuerySet:u1 u2 u3
结果(计算给定User-Queryset中的成员):
如何使用Django 1.8获取模型Group的带注释的QuerySet?
用例
显示每个组的用户名中包含"x"的成员数.
SQL
SELECT auth_group.id, auth_group.name,
(SELECT COUNT(auth_user_groups.id) FROM auth_user_groups WHERE
auth_user_groups.group_id = auth_group.id AND
auth_user_groups.user_id IN (SELECT auth_user.id FROM auth_user WHERE username LIKE '%x%')) AS user_cnt
FROM auth_group ORDER BY user_cnt DESC;
Run Code Online (Sandbox Code Playgroud)
更新
组g4没有匹配的成员,但它应该在带注释的QuerySet中.
from django.db.expressions import Case, When
from django.db.models import Count, IntegerField
Group.objects.annotate(
user_cnt=Count(Case(When(user__in=user_list, then=1),
output_field=IntegerField())),
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
296 次 |
| 最近记录: |