[英]Django - Sort a list by related fields
我的模特:
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。
我想按表Value
的val
排序此列表, Value
类型为t
。 任何想法?
非常感谢!
更新:
-我添加了一个新条件。
您可以始终使用lambda函数对项目列表进行排序(假设“ Item
和“ Value
模型之间存在一对一的关系,否则我认为这个问题没有道理)
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)
sorted(items.objects.all(), key=lambda item: item.value_set.get().val if item.value_set.all() else None)
如果未为某些项目设置外键,则应这样做。
我在python文档中找到的此类排序教程中的Check Key Functions
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.