2010-01-14 9 views
13

Chcę posortować zestaw zapytań kontaktów w powiązanym polu. Ale nie wiem jak. Próbowałem to tak, ale to nie działa.Zamówienie django według pokrewnego pola

foundContacts.order_by("classification.kam") 

Właściwie w szablonie mogę uzyskać dostęp do wartości kam o kontakt poprzez contact.classification.kam ponieważ jest to związek OneToOne.

The (uproszczony) modeli wyglądać następująco:

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) 

Odpowiedz

22

Powinno być:

foundContacts.order_by("classification__kam") 

Tu jest link do docs Django na tworzeniu zapytań obejmujących relacje: http://docs.djangoproject.com/en/1.1/topics/db/queries/#lookups-that-span-relationships

Niektóre przykłady można również znaleźć w dokumencie order_by:
https://docs.djangoproject.com/en/1.6/ref/models/querysets/#django.db.models.query.QuerySet.order_by

+3

Składnia jest poprawna, ale nie ma to nic wspólnego z widokiem a szablonem. Nie można w ogóle tego rodzaju porządkowania w szablonie (ponieważ składnia szablonu nie pozwala na wywoływanie funkcji z argumentami). Ale składnia podwójnego podkreślenia jest używana dla wszystkich przejazdów relacji * wewnątrz * wywołania funkcji - filtra, adnotacji, rzędu zleceń itp. Natomiast normalna składnia kropek dotyczy sytuacji, gdy mamy obiekt i chcemy odnosić się do powiązanego obiektu. –

+0

Sformułowanie było słabe i usunąłem je. –

+0

OK, teraz działa. Dzięki! –

Powiązane problemy