521 Stimmen

Wie man als GROUP BY in django abfragen?

Ich frage ein Modell ab:

Members.objects.all()

Und sie kehrt zurück:

Eric, Salesman, X-Shop
Freddie, Manager, X2-Shop
Teddy, Salesman, X2-Shop
Sean, Manager, X2-Shop

Was ich will, ist zu wissen, die beste Django Weg zu feuern a group_by Abfrage an meine Datenbank, wie:

Members.objects.all().group_by('designation')

Das klappt natürlich nicht. Ich weiß, wir können ein paar Tricks anwenden django/db/models/query.py aber ich bin einfach neugierig, wie man es ohne Parcheando machen kann.

1voto

Flimm Punkte 112964

Wenn Sie die Modellobjekte und nicht nur einfache Werte oder Wörterbücher benötigen, können Sie wie folgt vorgehen:

members = Member.objects.filter(foobar=True)
designations = Designation.objects.filter(member__in=members).order_by('pk').distinct()

Ersetzen Sie member__in mit der klein geschriebenen Version Ihres Modellnamens, gefolgt von __in . Wenn Ihr Modellname zum Beispiel lautet Car verwenden car__in .

-7voto

from django.db.models import Sum
Members.objects.annotate(total=Sum(designation))

müssen Sie zunächst Sum dann ..

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X