python - 如何在 django 中按日期范围过滤记录?
问题描述
我可以按用户给定的日期范围过滤记录吗?
我想在 django 中创建一个 Daterange 表单(它将包含开始日期和结束日期),用户将在其中给出他们的具体日期,并且它将根据用户给出的日期过滤对象......
我可以在 Django 中执行此操作吗?
解决方案
是的,假设模型看起来像:
class MyModel(models.Model):
date = models.DateField()
您可以在以下之间获取所有MyModel
对象:2018-1-1
2018-2-9
from datetime import date
MyModel.objects.filter(date__range=(date(2018,1,1), date(2018, 2, 9)))
因此,您可以使用如下形式:
class DateRangeForm(forms.Form):
start_date = forms.DateField()
end_date = forms.DateField()
然后在视图中过滤,如:
def my_view(request):
if request.method == 'POST':
form = DateRangeForm(request.POST)
if form.is_valid():
qs = MyModel.objects.filter(date__range=(
form.cleaned_data['start_date'],
form.cleaned_data['end_date']
))
# do something
else:
# do something
pass
else:
# do something
pass
推荐阅读
- python - 如何获得将长度为 n 的列表划分为 m 个子列表的所有可能组合
- r - 将数据库打印为文本
- django - 将上下文添加到 django admin changelist_view
- scrapy - 返回文件仅包含找到关键字的网址
- angular - 处理两个 HTTP 请求(Angular + RxJS)
- javascript - 所有返回 Promise 的函数都必须定义为异步吗?
- python - 在进行转换时跟踪 PIL 图像中的参考像素
- postgresql - 如何在特定范围之间选择日期,包括 PostgreSQL 提供范围之外的最接近可用日期?
- protocol-buffers - 如何只为导入路径生成 protobuf 消息?
- nginx - Nginx SSL Chrome ERR_HTTP2_PROTOCOL_ERROR