2013-11-27 39 views
0

所以,如果我有一個自定義Manager與自定義QuerySet,是有辦法使該Manager/QuerySet回報以一種特定的方式沒有硬所有方法編碼便下令一切嗎?Django的定製經理退還訂購

+0

你可以使用一個類裝飾器來命令每個返回QuerySet的方法的結果。 –

+0

這將是我的意思是「硬編碼」。因爲我不得不爲每個方法做 –

+0

否,裝飾器會一次裝飾所有方法。 –

回答

1

您可以使用ordering optionMeta類的模型

class MyModel(models.Model): 
    class Meta: 
     ordering = ('name',) #Or change to any other attributes. 

這將確保查詢集的order by條款設置按名稱按默認訂購。

+0

這正是我在短期內尋找的東西......但是在將來,我希望能夠根據多列值對算法進行排序。我可以這樣做嗎?像'ordered =('name',my_algorithm('column1','column2'))''? –

+0

但這確實回答了我的問題,所以我將其標記爲正確 –

+0

我不相信你可以這樣做,因爲這些字段直接轉換爲數據庫中的列。你可能不得不使用自定義管理器(你甚至可以重寫默認管理器) - 這是一個非常普遍的需求,管理者是一個廣泛使用的解決方案。 – karthikr