Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django在两个日期之间进行选择_Python_Django - Fatal编程技术网

Python 使用Django在两个日期之间进行选择

Python 使用Django在两个日期之间进行选择,python,django,Python,Django,我想做一个查询,在Django的日期之间进行选择 我知道如何很容易地使用原始SQL实现这一点,但是如何使用Django ORM实现这一点呢 这是我想在我的查询中添加30天间隔日期的地方: start_date = datetime.datetime.now() + datetime.timedelta(-30) context[self.varname] = self.model._default_manager.filter( current_issue__isnull=True

我想做一个查询,在Django的日期之间进行选择

我知道如何很容易地使用原始SQL实现这一点,但是如何使用Django ORM实现这一点呢

这是我想在我的查询中添加30天间隔日期的地方:

start_date = datetime.datetime.now() + datetime.timedelta(-30)
context[self.varname] = self.model._default_manager.filter(
    current_issue__isnull=True
    ).live().order_by('-created_at')
使用操作员:

...filter(current_issue__isnull=True, created_at__range=(start_date, end_date))
两种方法

.filter(created_at__range=[from_date, to_date])
另一种方法

.filter(Q(created_at__gte=from_date)&Q(created_at__lte=to_date))
  • gte表示大于等于
  • lte意味着小于等于

如果您使用的是
日期时间字段
,则使用日期进行筛选不会包括最后一天的项目

您需要将值强制转换为日期:

...filter(created_at__date__range=(start_date, end_date))

“created_at”是模型中的任意字段还是创建记录时数据库的实际日志?@Philip556677它是模型中的任意字段。您可以将DateField的参数设置为True以方便使用。在第二种方法中不需要Q对象,您可以编写:
.filter(created_at_ugte=from_date,created_at_ulte=to_date)