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

发布于 2024-11-06 03:21:02 字数 486 浏览 0 评论 0原文

我的模型:

Item:
    name
    desc

Type:
    name

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

现在我有一个项目的对象列表,但没有查询集,例如: items = [, , ]t = 5 是 Type 中一行的 id。

我想按表 Valueval 对此列表进行排序,值的类型为 t。有什么想法吗?

多谢!

更新:
- 我添加了一个新条件。

My models:

Item:
    name
    desc

Type:
    name

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

Now I have an objects list of items but not a QuerySet, for instance: items = [<object:1>, <object:2>, <object:4>]. And t = 5 is an id of a row from Type.

I want to sort this list by val of table Value and type of value is t. Any idea?

Thanks alot!

UPDATE:
- I've added a new condition.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

鹿港小镇 2024-11-13 03:21:02

您始终可以使用 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)

You can always use lambda function to sort the list of items (assuming there is a one to one relationship between Item and Value model, otherwise I don't think the question makes sense)

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

Although the point to be noted is that the sorting will be in memory.

For Updated Question

Just adding a filter should do the task

 items.sort(key=lambda object: object.value_set.filter(type__id=5)[0].val)
回忆躺在深渊里 2024-11-13 03:21:02

检查我在这个排序教程中找到的关键功能蟒蛇文档

Check Key Functions in this sort tutorial that I found in python docs

怪我入戏太深 2024-11-13 03:21:02
sorted(items.objects.all(), key=lambda item: item.value_set.get().val if item.value_set.all() else None)

应该这样做,以防某些项目没有设置外键。

sorted(items.objects.all(), key=lambda item: item.value_set.get().val if item.value_set.all() else None)

should do it in case your foreign key isn't set for some items.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文