Django Queryset GET(1 个结果)检查一个字段的最大值

Django Queryset GET (1 result) checking MAX value of one filed

也许解决办法是用Filter做,然后循环。但是让我们看看你们是否可以告诉我一种使用 GET

来做到这一点的方法

我使用 GET 进行查询,因为我需要确保只得到一个结果

result = OtherModel.objects.get(months_from_the_avail__lte=self.obj.months_from_avail)

Months_from_avail 是一个整数值。

例子

months_from_the_avail = 22

在另一个模型中有 3 行。

A) months_from_the_avail = 0  
B) months_from_the_avail = 7
C) months_from_the_avail = 13 

所以,当我查询它时 returns 所有这些都小于等于值 22 但我需要得到 13 作为最后一个范围。

range 1 = 0-6
range 2 = 7-12
range 3 = 13 ++

有什么方法是我没想到的吗?或者我应该将其更改为 filter() 然后循环处理结果?

您可以从查询 order_by months_from_the_avail 中获取 first() 部分 请记住 django 查询是惰性的,它不会在查询完成调用之前执行,因此您仍然可以使用 filter:

result = OtherModel.objects.filter(months_from_the_avail__lte=self.obj.months_from_avail).order_by('-months_from_the_avail').first()

#order by descending get first object which is the largest, return None if query set empty

Abdul 的另一个我认为更快更好的建议是使用 latest()

OtherModel.objects.latest('-months_from_the_avail')