Wie kann man eine "Größte-N-pro-Gruppe" -Abfrage in Django machen?

8

(Dies ist die Django-Version des Threads bei SQL-Join: Auswahl der letzten Datensätze in einer Eins-zu-viele-Beziehung )

Angenommen, ich habe eine Tabelle mit Kunden und eine Tabelle mit Einkäufen. Jeder Einkauf gehört einem Kunden. Ich möchte eine Liste aller Kunden zusammen mit ihrem letzten Kauf erhalten. Kann es ohne Raw SQL und ohne mehrere Datenbankabfragen gemacht werden?

    
netvope 21.01.2010, 17:57
quelle

3 Antworten

3

Sie können sich eine ähnliche Diskussion ansehen:

Django Abfrage, die am meisten bekommen Letzte Objekte aus verschiedenen Kategorien

    
Tomasz Zielinski 22.01.2010, 00:06
quelle
3

Das ist in Django nicht möglich. Sie können den Kunden nur mit dem Datum des letzten Kaufs wie folgt erreichen:

%Vor%

, aber Sie erhalten auf diese Weise nicht automatisch Zugriff auf den tatsächlichen Kauf.

    
Daniel Roseman 21.01.2010 19:09
quelle
1
%Vor%

Stellen Sie sicher, dass Sie einen zusammengesetzten Index für purchases (customer, date) haben, wenn Ihre Tabelle InnoDB ist, oder purchases (customer, date, id) , wenn Ihre Tabelle MyISAM ist.

    
Quassnoi 21.01.2010 18:09
quelle