Arn*_*aud 2 python django datetime django-rest-framework
通过Django Rest Framework API,我试图在将来为所有具有日期时间的对象提供服务.
问题是,一旦服务器启动,每次我提交查询时,API将为所有日期时间大于服务器启动日期时间的对象提供服务,而不是日期时间大于当前时间的对象.
from django.utils import timezone
class BananasViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Banana.objects.filter(date_and_time__gte=timezone.now())
...
Run Code Online (Sandbox Code Playgroud)
没有更多的运气,我也试过这个变化:
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())
...
Run Code Online (Sandbox Code Playgroud)
在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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
834 次 |
| 最近记录: |