我有一个模型字段time_stamp = models.DateTimeField(timezone.now)
。现在我想根据日期范围进行搜索,例如2016-11-08到2016-12-08。我怎么能这样做。
答案 0 :(得分:0)
https://docs.djangoproject.com/en/1.10/ref/models/querysets/#range
import datetime
start_date = datetime.date(2005, 1, 1)
end_date = datetime.date(2005, 3, 31)
Entry.objects.filter(pub_date__range=(start_date, end_date))
答案 1 :(得分:0)
Model.objects.filter(time_stamp__range=["2016-11-08", "2016-12-08"])
链接Django database query: How to filter objects by date range?
答案 2 :(得分:0)
来自range
查询的文档:
使用日期过滤
$(document).on("change", ".cmplregimem .cmpx" , function() { var pro_cat_m = $(this).val(); var text =$(this).parent().parent().prevAll('tr').find('td:first').map(function() { return $(this).find('option:selected').text(); }).get();
将不包括最后一天的项目,因为边界被解释为“在给定日期的0am”。
考虑到这一点,如果您想要上一个日期的项目,即DateTimeField
,您可以考虑在过滤中使用2016-12-08
。
2016-12-09
或者,使用import datetime
start_date = datetime.date(2016, 11, 8)
# use the day after 2016-12-08 to include it
end_date = datetime.date(2016, 12, 9)
Model.objects.filter(time_stamp__range=(start_date, end_date))
和gte
查找:
lte
答案 3 :(得分:0)
如果你的django版本是> = 1.9,你可以在datetime字段中使用date
强制转换。
Model.objects.filter(time_stamp__date__gte=start_date, time_stamp__date__lte=end_date)
这也将考虑时区转换。其他答案的问题在于他们没有考虑在datetime
字段上进行过滤。
关于这个的Django文档:https://docs.djangoproject.com/en/1.9/ref/models/querysets/#date