gpt4 book ai didi

python - Django:timezone.now() 不返回当前日期时间

转载 作者:行者123 更新时间:2023-11-28 19:55:04 25 4
gpt4 key购买 nike

通过 Django Rest Framework API,我试图为所有对象提供 future 的日期时间。

问题是,一旦服务器启动,每次我提交查询时,API 将服务于日期时间大于服务器启动日期时间的所有对象,而不是日期时间大于的对象当前时间。

from django.utils import timezone

class BananasViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Banana.objects.filter(date_and_time__gte=timezone.now())
...

没有更多的运气,我也尝试了这个变体:

import datetime as dt

class BananasViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Banana.objects.filter(date_and_time__gte=
timezone.make_aware(dt.datetime.now(), timezone.get_current_timezone())
...

在 Django shell 中进行类似的查询会正确返回最新的对象...

最佳答案

由于当前已编写应用程序代码,所以当类首次从任何地方导入时,您将运行一次 timezone.now()

与其在类属性本身上应用时间查询集过滤,不如在 get_queryset() 方法中执行此操作,以便在每次传递时重新评估它。

例如。

class BananasViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Banana.objects.all()

def get_queryset(self):
cutoff = timezone.now()
return self.queryset.filter(date_and_time__gte=cutoff)

关于python - Django:timezone.now() 不返回当前日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31521846/

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