gpt4 book ai didi

django - 给关系排序排序

转载 作者:行者123 更新时间:2023-12-04 12:56:48 24 4
gpt4 key购买 nike

鉴于以下 Django 模型:

class Room(models.Model):
name = models.CharField(max_length=20)

class Beacon(models.Model):
room = models.ForeignKey(Room)
uuid = models.UUIDField(default=uuid.uuid4)
major = models.PostiveIntegerField(max_value=65536)
minor = models.PositiveIntegerField(max_value=65536)
Beacon模型是与房间的蓝牙信标关系。

我想选择与给定 uuid, major, minor 匹配的所有房间组合。

问题是,我想通过离我最近的信标订购房间。因此,我需要能够动态地为每个信标分配一个值,然后对其进行排序。

这可以用 Django ORM 实现吗?在 Django 1.8 中?

注意 - 我会事先知道信标的顺序,我将使用它们在查询字符串中传递的顺序。所以第一个信标(uuid,major,minor)应该匹配 Room QuerySet 返回的第一个房间

我正在设想这样的事情,尽管我知道这行不通:
beacon_order = [
beacon1 = 1,
beacon0 = 2,
beacon3 = 3,
]

queryset = Room.objects.annotate(beacon_order=beacon_order).\
order_by('beacon_order')

最佳答案

如果您已经知道信标的顺序,则无需在 QuerySet 本身内进行排序。取一个名为 beacon_list 的有序列表,其中按顺序包含信标的主键,例如索引 0 处的项是最近的信标的主键,索引 1 处的项是第二个最近的信标的 PK,依此类推。然后使用列表理解:

ordered_rooms = [Room.objects.get(pk=x) for x in beacon_list]

您也不必使用 PK,您可以使用任何标识数据库中给定对象的东西,例如 name field 。

关于django - 给关系排序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52451343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com