Django获取所有值Group By特定的一个字段

Md.*_*san 7 django django-models

我想执行一个简单的查询,如:

    select *,count('id') from menu_permission group by menu_id
Run Code Online (Sandbox Code Playgroud)

在django格式中我尝试过:

    MenuPermission.objects.all().values('menu_id').annotate(Count('id))
Run Code Online (Sandbox Code Playgroud)

它只选择menu_id.查询执行:

    SELECT `menu_permission`.`menu_id`, COUNT(`menu_permission`.`id`) AS `id__count` FROM `menu_permission` GROUP BY `menu_permission`.`menu_id`
Run Code Online (Sandbox Code Playgroud)

但我也需要其他领域.如果我尝试:

   MenuPermission.objects.all().values('id','menu_id').annotate(Count('id))
Run Code Online (Sandbox Code Playgroud)

它按条件添加'id'.

  GROUP BY `menu_permission`.`id`
Run Code Online (Sandbox Code Playgroud)

结果我没有得到预期的结果.我如何通过组只获得一列所有对象?

bys*_*eti 0

query = MenuPermission.objects.values('menu_id').annotate(menu_id_count=Count('menu_id'))
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式检查您的 SQL 查询print(query.query)