两个日期之间的Django过滤器

Ana*_*Ali 2 django django-rest-framework

我的 Django 模型日期时间字段是字符串。在这种情况下,如何获取两个日期之间的数据?

模型.py

class asdf(models.Model):
     recordDate = models.CharField(max_length=20,blank=True)
Run Code Online (Sandbox Code Playgroud)

小智 11

将 'recordDate' 更改为 DateField 并使用以下查询:

asdf.objects.filter(recordDate__gte='2019-03-01', recordDate__lte='2019-03-09')
Run Code Online (Sandbox Code Playgroud)


Aal*_*mar 7

为了在范围之间使用过滤器此查询:

models.asdf.objects.filter(recordDate__gte='start_date', recordDate__lt='end_date')
Run Code Online (Sandbox Code Playgroud)

start_date并且end_date可以是日期格式的字符串或日期时间解析的对象。


小智 5

这对我有用, 记住一件事,您在数据库中存储的内容仅意味着日期或日期时间

当日期时间

start = '2021-08-12 21:52:33.118649'
end = '2021-08-13 06:30:46.909572'
user = UserAccount.objects.filter(created_at__gte=start, 
created_at__lte=end)
print user
Run Code Online (Sandbox Code Playgroud)

当日期

start = '2021-08-12'
end = '2021-08-13'
user = UserAccount.objects.filter(created_at__gte=start, 
created_at__lte=end)
print user
Run Code Online (Sandbox Code Playgroud)

或者您也可以在此处使用 __range 进行过滤

start = '2021-08-12 21:52:33.118649'
end = '2021-08-13 06:30:46.909572'
user = UserAccount.objects.filter(created_at__range=(start, end))
print user
Run Code Online (Sandbox Code Playgroud)

如果您存储在数据库数据时间中并且只想从数据库中检索日期

from datetime import datetime
datetime.strptime('2014-12-04', '%Y-%m-%d').date()
Run Code Online (Sandbox Code Playgroud)