2010-01-14 161 views
13

我想通過相關字段排序聯繫人的QuerySet。但是我不知道怎麼做。 我試過這樣,但它不起作用。django相關字段排序

foundContacts.order_by("classification.kam") 

實際上,在模板中,我可以通過contact.classification.kam訪問聯繫人的kam值,因爲它是OneToOne關係。

(簡化)模型是這樣的:

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) 

回答

22

它應該是:

foundContacts.order_by("classification__kam") 

這裏是使跨越關係查詢的鏈接Django文檔:http://docs.djangoproject.com/en/1.1/topics/db/queries/#lookups-that-span-relationships

您還可以在order_by參考中看到一些示例:
https://docs.djangoproject.com/en/1.6/ref/models/querysets/#django.db.models.query.QuerySet.order_by

+3

語法正確,但這與查看vs模板無關。你根本不能在模板中進行這種排序(因爲模板語法不允許你用參數調用函數)。但是雙下劃線語法用於*函數調用中的所有關係遍歷*過濾器,批註,order_by等。而正常的點語法用於當有對象並且想要引用相關對象時。 – 2010-01-14 17:23:02

+0

措辭不佳,我已將其刪除。 – 2010-01-14 17:28:37

+0

好吧,它現在的作品。謝謝! – 2010-01-14 21:27:18