我使用的是django 1.7。
我有一个名为priority
的字段。
我想找到下一个high value and previous low value
例如,如果我在数据库中有这个
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')
最后选择查询集中的第一项:
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
(在您的情况下,这意味着当前对象在列表中具有最高或最低优先级)。如果同一优先级可能出现多次,则可能需要调整代码以使用gte
和lte
。