我的模特:
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
的{{1}}对此列表进行排序,值类型为Value
。有什么想法吗?
非常感谢!
更新
- 我添加了一个新的条件。
答案 0 :(得分:2)
你总是可以使用lambda函数对项目列表进行排序(假设Item
和Value
模型之间存在一对一的关系,否则我认为这个问题没有意义)< / p>
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 :(得分:1)
sorted(items.objects.all(), key=lambda item: item.value_set.get().val if item.value_set.all() else None)
如果没有为某些项目设置外键,应该这样做。
答案 2 :(得分:1)
检查我在python docs中找到的this排序教程中的关键函数