2016-04-13 46 views
0

我想根據其外鍵字段排序模型。當使用這個關於ORM的搜索時,我發現了結果,但我在那之前,聲明瞭元類。他們表現出的東西,如通過其外鍵字段確定模型的默認順序Django

units = Unit.objecwhere to lookts.filter(color='red').order_by('location__label') 

,但我想在聲明中自動訂購:

class Office(models.Model): 
    objects = OfficeManager() 
    id = models.IntegerField(db_column='office_id', primary_key=True) 
    office = models.CharField(max_length=20) 
    description = models.CharField(max_length=255) 

    class Meta: 
     db_table = 'tblOffices' 
     ordering = ('office',) 

    def __str__(self): 
     return self.office 


class OfficeCity(models.Model): 
    office = models.ForeignKey(Office, db_column='tblOffices') 
    name = models.CharField(max_length=255) 

    class Meta: 
     db_table = 'cities' 
     ordering = ('office.description') 

是上面的代碼片斷正確訂購這些城市由FK描述字段?謝謝

附加是一個django學習者的「小於或等於15秒使用Google搜索」的演示,結束報價。

enter image description here

enter image description here

注意的是,在第二張圖片中,Django的學習者可能受到誘惑,點擊https://docs.djangoproject.com/en/1.9/ref/models/fields/和讀取整個26頁(從,如果你要打印),花幾個小時學習他們已經閱讀的有用的東西,但肯定沒有通過「在15秒內使用它搜索」來找到問題的答案。這導致人們相信,可能在15秒內搜索到它的人已經知道在哪裏看尋找什麼,這就是爲什麼他們花了15秒,但對於學習者來說,需要幾個小時才能找到答案。如果學習者沒有實現這個功能,但僅僅是好奇的話,這似乎是一個問題(Q部分),論壇是尋求答案的恰當場所(Q & A的一部分)。讓我們把自我留給腦外科醫生,我們知道如果你已經做了30年你是一個專家,那麼我們這些年齡的一半學習這個將成爲一個專家,當我們也是60歲。但希望我們保持謙虛,但...

+1

您可以隨時克隆項目,指向您擁有的數據庫並使用自己的數據進行測試。依靠代碼功能的問答網站是一個壞主意......只是說。 – cdvv7788

+0

我不打算實現這一點,這個問題是有用的,答案不容易在網上找到...只是說。 – codyc4321

+0

我真的不明白爲什麼你不能在本地測試它。所有你需要的是2個辦公室和2個辦公城市。您可以通過管理員或腳本(使用工廠)輸入它們。 –

回答

1
class Meta: 
    ordering = ('office__description',) 
+1

你能否提供解釋如何解決問題的解釋? – pczeus

+1

「我想訂購一個基於其外鍵字段的模型」=>我的回覆是正確的語法。 –

+0

pczues,在上面的迂腐,苦苦討論之後,弗朗索瓦決定在2行內完全簡潔地回答我的問題。由於時間價值「15秒」是一個主題,我只是輸入了他的答案,它讓我看到了15秒。這解決了我問的問題,但似乎沒有解決先生。弗朗索瓦混淆了爲什麼我無法在工作中得到副總裁的批准而無法在殼體中進行測試,這真的是這裏最大的問題。治療癌症>瞭解我的本地項目配置>結束世界飢餓,按此順序。 – codyc4321