2010-01-14 8 views
13

Ich möchte ein QuerySet von Kontakten nach einem verwandten Feld sortieren. Aber ich weiß nicht wie. Ich habe es so versucht, aber es funktioniert nicht.Django-Reihenfolge nach verwandtem Feld

foundContacts.order_by("classification.kam") 

Eigentlich in einer Vorlage kann ich den KAM Wert eines Kontakts durch contact.classification.kam zugreifen, da es sich um eine OneToOne Beziehung.

Die (vereinfacht) Modelle wie folgt aussehen:

foundContacts.order_by("classification__kam") 

Hier ist ein Link für die auf Herstellung Abfragen Django docs, die Beziehungen überspannen:

class Classification(models.Model): 
    kam = models.ForeignKey(User) 
    contact = models.OneToOneField(Contact) 

class Contact(models.Model): 
    title = models.ForeignKey(Title, blank=True, null=True) 
    first_name = models.CharField(max_length=200) 
    last_name = models.CharField(max_length=200) 

Antwort

22
+3

Die Syntax ist korrekt, aber das hat nichts mit view vs. template zu tun. Sie können diese Art der Sortierung gar nicht in der Vorlage durchführen (da die Vorlagensyntax es nicht erlaubt, Funktionen mit Argumenten aufzurufen). Die Syntax mit doppeltem Unterstrich wird jedoch für alle Beziehungsquerverweise innerhalb eines Funktionsaufrufs verwendet - Filter, Annotate, Order_by usw. Während die normale Punktsyntax für den Fall gilt, dass Sie ein Objekt haben und auf das zugehörige Objekt verweisen möchten. –

+0

Der Wortlaut war schlecht und ich habe ihn entfernt. –

+0

Ok, es funktioniert jetzt. Vielen Dank! –

Verwandte Themen