如何在django查询中找到下一个最高值

时间:2015-03-05 16:06:18

标签: python django

我正在使用django 1.7。

我有一个名为priority的字段。

我想找到下一个high value and previous low value

例如,如果我在数据库中有这个

1,5,8,4,12,19,31

例如,如果我当前的priority = 12,那么我想要使用priority 19和之前的priority=8

进行记录

我无法弄明白怎么做

1 个答案:

答案 0 :(得分:5)

要获取下一个对象,首先过滤以获取具有更高优先级的所有对象:

objects = MyObjects.objects.filter(priority__gt=12)

然后按优先级排序结果:

objects = objects.order_by('priority')

最后选择查询集中的第一项:

next_obj = objects.first()

把它放在一起:

next_obj = MyObjects.objects.filter(priority__gt=12).order_by('priority').first()

获取上一个对象是类似的,但您需要反向订购:

prev_obj = MyObjects.objects.filter(priority__lt=12).order_by('-priority').first()

请注意,如果查询集中没有对象,first()可以返回None(在您的情况下,这意味着当前对象在列表中具有最高或最低优先级)。如果同一优先级可以多次出现,您可能需要调整代码以使用gtelte