gpt4 book ai didi

django - 过滤最接近给定日期时间的日期时间

转载 作者:行者123 更新时间:2023-12-03 23:34:04 24 4
gpt4 key购买 nike

我有一个具有日期时间字段的模型。现在给定一个特定的日期时间 - DT,我需要获取日期时间最接近 DT 的对象。这可能吗?

谢谢,

最佳答案

您可以通过两个查询和一些逻辑获得它:

这个想法是找到一个紧跟在目标日期时间之后的对象和一个紧接在目标日期时间之前的对象,并返回其中之一:

# this method is on the model's manager
def get_closest_to(self, target)
closest_greater_qs = self.filter(dt__gt=target).order_by('dt')
closest_less_qs = self.filter(dt__lt=target).order_by('-dt')

try:
try:
closest_greater = closest_greater_qs[0]
except IndexError:
return closest_less_qs[0]

try:
closest_less = closest_less_qs[0]
except IndexError:
return closest_greater_qs[0]
except IndexError:
raise self.model.DoesNotExist("There is no closest object"
" because there are no objects.")

if closest_greater.dt - target > target - closest_less.dt:
return closest_less
else:
return closest_greater

要通过一个查询获得它,您必须退出 ORM 到原始 SQL。

关于django - 过滤最接近给定日期时间的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15855715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com