如何获取今天创建的对象?(Django-RestFramework)

Anu*_*tov 5 datetime django-rest-framework

型号领域:

time = models.DateTimeField()
Run Code Online (Sandbox Code Playgroud)

如何获取(仅)今天(从 00:00:00 到 23:59:59)创建的对象

喜欢:

objects = Model.objects.filter(time__gt=?????????)
Run Code Online (Sandbox Code Playgroud)

或者 ?

谢谢

Rah*_*pta 7

您可以使用datetime.date.today() 获取当前日期,然后根据今天的日期过滤对象。

你可以这样做:

import datetime

today = datetime.date.today() # date representing today's date
qs = MyModel.objects.filter(time__gt=today) # filter objects created today
Run Code Online (Sandbox Code Playgroud)

这里,qs代表今天创建的对象。

另一种解决方案是使用rangewhich来执行两个日期之间的查找。

这里,start_date代表00:00:00end_date代表23:59:59

import datetime

today = datetime.datetime.today()
start_date = datetime.datetime(year=today.year, month=today.month, day=today.day, hour=0, minute=0, second=0) # represents 00:00:00
end_date = datetime.datetime(year=today.year, month=today.month, day=today.day, hour=23, minute=59, second=59) # represents 23:59:59
qs = MyModel.objects.filter(time__range=(start_date, end_date)) # today's objects
Run Code Online (Sandbox Code Playgroud)

由于您使用的是 Django Rest Framework,因此您可能需要重写get_queryset()视图中的方法并返回包含今天创建的对象的查询集。

class MyView(..):

    def get_queryset(self):
        ..
        return qs # return the queryset created using the above logic
Run Code Online (Sandbox Code Playgroud)