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



也许解决方案是使用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 

因此,当我查询时,它会返回所有值,因为所有值都小于值22,但我需要得到13,这是最后一个范围。

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

有什么办法是我没有想过要做的吗?还是应该将其更改为filter((,然后对结果进行循环?

您可以通过months_from_the_avail从查询order_by中获取第一个((部分请记住,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')

相关内容

  • 没有找到相关文章

最新更新