注意:添加這個作爲答案是因爲OP詢問了原始問題的評論中的方法。在評論中顯示片段不允許圍欄代碼塊。
在對原始問題的評論中,我提到了一個替代解決方案,將您的訂單號碼存儲在模型字段中,以便有序查詢更簡單。
對此的一個用例是,如果您有一個對象的隊列,其中每個項目都是電影,並且用戶正在決定要觀看它們的順序。您可能想要讓Django管理員或用戶重新排序項目(因此使其成爲一個字段)。爲了一個簡單的例子,我們假設只有一個用戶,所以我們將在模型中構建排序,而不是通過Item和User模型來建立自定義表。
型號:
class Item(models.Model):
# ...
my_order = models.PositiveIntegerField(unique=True)
設置屬性或者在創建或更高版本:
Item.objects.create(id=34, my_order=1)
Item.objects.create(id=12, my_order=2)
Item.objects.create(id=4, my_order=3)
# ...
當然,你可以創建他們和你希望的任何順序設置my_order
,結果會仍然是一樣的。
檢索對象所需的順序:
queryset = Item.objects.order_by('my_order')
是控制命令你確定(34,12,4,...)相關的屬性模型上的呢? –
這裏有一個潛在的相關問題 - http://stackoverflow.com/questions/883575/custom-ordering-in-django,雖然我不認爲你要找的是可能的,而不需要將查詢集轉換爲像一個列表,然後手動排序,例如使用自定義lambda。 –
否id列表與模型無關。 –