Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django查询中找到下一个最高值_Python_Django - Fatal编程技术网

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

Python 如何在django查询中找到下一个最高值,python,django,Python,Django,我正在使用django 1.7 我有一个名为priority的字段 我要查找下一个高值和上一个低值 例如,如果我在数据库中有这个 1,5,8,4,12,19,31 例如,如果我当前的priority=12,那么我想用priority 19获取记录,用priority=8获取上一个记录 我不知道如何获取下一个对象,首先筛选以获取具有更高优先级的所有对象: objects = MyObjects.objects.filter(priority__gt=12) objects = objects.o

我正在使用django 1.7

我有一个名为
priority
的字段

我要查找下一个
高值和上一个低值

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

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

例如,如果我当前的
priority=12
,那么我想用
priority 19
获取记录,用
priority=8
获取上一个记录


我不知道如何获取下一个对象,首先筛选以获取具有更高优先级的所有对象:

objects = MyObjects.objects.filter(priority__gt=12)
objects = objects.order_by('priority')
然后按优先级对结果排序:

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()

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

您不想获得优先级为19和8(而不是4)的记录吗?@Mazvél u r对,这是打字错误