【发布时间】:2020-10-25 19:49:46
【问题描述】:
在我的数据库中,我有很多不同日期的条目(包括时间、秒)。我需要找到所有最新的条目。
所以我尝试了:
arr = balance_sheet.objects.all().values('timestump')
date_arr=[]
for text in arr:
if text.get('timestump'):
date_arr.append(text.get('timestump'))
if date_arr:
latest_date = max(date_arr)
else:
latest_date = datetime.datetime.now()
latest = balance_sheet.objects.filter(timestump__icontains=latest_date)
但是在这种情况下latest 是空的。
但是如果我将最后一行更改为仅使用日期查询,它可以正常工作,但会返回当天的所有条目。
latest = balance_sheet.objects.filter(timestump__icontains=latest_date.date())
我需要找到所有最新的分:秒条目。最迟在最后一分钟进入。
我明白了:
2020-07-05 12:54:35.656849
2020-07-05 12:54:35.844049
2020-07-05 12:54:36.015650
2020-07-05 12:54:36.156050
2020-07-05 12:55:04.314099
2020-07-05 12:55:04.454500
2020-07-05 12:55:04.579300
2020-07-05 12:55:04.735300
我做错了吗?
我怎样才能只获得所有相同的分钟条目?如:
2020-07-05 12:55:04.314099
2020-07-05 12:55:04.454500
2020-07-05 12:55:04.579300
2020-07-05 12:55:04.735300
【问题讨论】:
-
这不是按时间返回最新的对象吗?
balance_sheet.objects.order_by('-timestump').first()? -
@ArakkalAbu 是的。谢谢你。我仍然想了解我问的事实。对于较大的数据库排序可能会减慢程序的速度。
-
@ArakkalAbu 但它只返回最后一个值。我有多个值作为最后一个条目。
-
@RafiSarker:不,根据所有记录手动确定最大值会慢 很多,因为它需要更多带宽,在 Python/Django 层进行处理,需要两次往返数据库等。
标签: python django filter django-queryset