2011-05-06 62 views
0

我的模型:Django的 - 由相關領域的排序列表

Item: 
    name 
    desc 

Type: 
    name 

Value: 
    item.ForeignKey(Item) 
    type.ForeignKey(Type) 
    val.CharField # varchar or numeric 

現在我有項目的對象列表,但不是一個QuerySet,例如:items = [<object:1>, <object:2>, <object:4>]。而t = 5是來自Type的一行id。

我想按的val對此列表進行排序,值類型爲t。任何想法?

非常感謝!

更新:
- 我添加了一個新條件。

+0

發現如果你有一個正確的列表,這有什麼錯'list.sort()'? – 2011-05-06 12:25:07

回答

2

您可以隨時使用lambda函數來排序的項目列表(假設存在一個ItemValue模型之間一對一的關係,否則我不認爲這個問題是有道理的)

items.sort(key=lambda object: object.value_set.all()[0].val) 

雖然要注意的一點是,排序將在內存中。

更新的問題

只要添加一個過濾器應該做任務

items.sort(key=lambda object: object.value_set.filter(type__id=5)[0].val) 
1
sorted(items.objects.all(), key=lambda item: item.value_set.get().val if item.value_set.all() else None) 

應該做在你的外鍵不是爲某些項目設置情況。

1

檢查按鍵功能this排序的教程,我在python文檔