根据v1.9中添加的document,我们可以无需时间按日期查询DateTimeField
。
例如:
Entry.objects.filter(pub_date__date=datetime.date(2005, 1, 1))
Entry.objects.filter(pub_date__date__gt=datetime.date(2005, 1, 1))
但它不适合我:
class MilkStorage(models.Model):
....
created_at = models.DateTimeField(null=False)
用法
from datetime import date
MilkStorage.objects.filter(created_at__date=date.today())
它返回一个空的查询集<QuerySet []>
。
此查询仅适用于PostgreSQL
吗?我正在使用MySQL
。
答案 0 :(得分:2)
根据您的具体要求,这可能是也可能不是理想的解决方案。如果在settings.py
中设置USE_TZ = False,我发现__date有效我有同样的问题(我甚至无法按__month或__day过滤),直到我禁用了USE_TZ。同样,可能不适合您的情况,但它应该__date再次工作。
答案 1 :(得分:0)
我有一个访客模型。在这个模型中,我通过日期而不是时间过滤数据并且它正在工作。
models.py
Visitor(models.Model):
timestamp = models.DateTimeField(_('Login Date Time'), auto_now=True)
os_info = models.CharField(_('OS Information'), max_length=30, null=True)
views.py
import datetime
visitor = Visitor.objects.filter( timestamp__lte=datetime.datetime.now().date())
print visitor
输出:
<Visitor: Windows 10>, <Visitor: Windows 10>]
使用上述方法过滤日期数据。
答案 2 :(得分:0)
您可以使用多种方法根据日期进行过滤。 这里有一些
import datetime
custom_date = datetime.date(2005, 1, 1)
Entry.objects.filter(pub_date__contains=custom_date) #Fastest in terms of performance
Entry.objects.filter(pub_date__startswith=custom_date)
Entry.objects.filter(pub_date__gte=custom_date)