繁体   English   中英

Django-按相关字段对列表进行排序

[英]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。

我想按表Valueval排序此列表, 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM