2016-08-09 66 views
4

Ich möchte wie eine einfache Abfrage auszuführen:Django alle Werte Gruppierung insbesondere ein Feld erhalten

select *,count('id') from menu_permission group by menu_id 

In django Format habe ich versucht:

MenuPermission.objects.all().values('menu_id').annotate(Count('id)) 

Es ist select nur menu_id. Abfrage ausgeführt für diese:

SELECT `menu_permission`.`menu_id`, COUNT(`menu_permission`.`id`) AS `id__count` FROM `menu_permission` GROUP BY `menu_permission`.`menu_id` 

Aber ich brauche andere Felder auch. Wenn ich versuche:

MenuPermission.objects.all().values('id','menu_id').annotate(Count('id)) 

Es ist 'id' in Gruppe nach Bedingung hinzufügen.

GROUP BY `menu_permission`.`id` 

Als Ergebnis erhalte ich nicht erwartetes Ergebnis. Wie kann ich alle Objekte nach Gruppen durch nur 1 Spalte bekommen?

Antwort

0
query = MenuPermission.objects.values('menu_id').annotate(menu_id_count=Count('menu_id')) 

Sie können Ihre SQL-Abfrage von print(query.query)

+0

Seine einzige menu_id und menu_id Zählwert geben. Aber ich brauche alle anderen Felder @bysucpmeti –

0

überprüfen Sie den folgenden Code verwenden:

MenuPermission.objects.values('menu_id').annotate(Count('id)).values('field1', 'field2', 'field3'...)