我正在編寫一個具有人員模型的Django應用程序,並且我碰到了一個障礙。我將角色對象分配給使用多對多關係的人 - 其中角色具有名稱和權重。我希望以他們最重的角色的重量來排列我的人名單。如果我做People.objects.order_by(' - roles__weight'),那麼當人們有多個角色分配給他們時,我會得到重複。Django:通過多對多訂購模型
我最初的想法是添加一個稱爲最重的角色重量的非規範化字段 - 並按此排序。這可以在每次向用戶添加或刪除新角色時更新。但是,事實證明,每當在Django中更新ManyToManyField時,都無法執行自定義操作(無論如何,這都是yet)。
所以,我認爲我可以完全放棄並寫一個自定義字段,描述符和管理器來處理這個問題 - 但是當爲ManyToManyField動態創建ManyRelatedManager時,這似乎極其困難。
我一直在想出一些聰明的SQL,可以爲我做這個 - 我敢肯定它可能與子查詢(或幾個),但我會擔心它不兼容將所有數據庫後端Django支持。
有沒有人做過此事 - 或者有任何想法如何實現?
正是我一直在尋找。我沒有運行Django 1.1,但我可以在我的自定義管理器中使用該SQL。謝謝 :) – 2009-06-01 14:40:45