过滤django中在特定小时之前或之后添加的对象

时间:2016-02-01 14:06:01

标签: django django-models django-views django-rest-framework django-filter

我在我的应用中使用django-1.7。我有一个有两个DateTimeFields的模型。喜欢

  System.config({
    packages: {
      app: {
        format: 'register',
        defaultExtension: 'js'
      }
    },
    map: {
      lodash: 'node_modules/lodash/lodash.js',
      twitter: 'node_modules/twitter/index.js'
    },
    meta: {
      lodash: { format: 'amd' },
      twitter: { format: 'amd' }
    }
  });

我希望使用小时class Task(models.Model): start_time = models.DateTimeField(null=True, blank=True) finish_time = models.DateTimeField(null=True, blank=True) start_time过滤字段end_timegte,以便我可以获取包含必须从a开始的Task对象的查询集特定时间,并在特定时间结束。我在

中尝试过的
lte

但是这个查询给了我错误

Task.objects.filter(start_time__hour__gte=2)
Task.objects.filter(end_time__hour__lte=2)

我也尝试过queryset.raw,它提供了正确的值,但在使用 FieldError: Unsupported lookup 'hour' for DateTimeField or join on the field not permitted. 包时出错。

django-filters

帮助将受到欢迎

1 个答案:

答案 0 :(得分:0)

我对此不太确定,但通过阅读文档听起来,hour__gte=2语法仅在django 1.9中添加。以前版本的django只允许精确查找hour=2。您可以考虑升级django并重试。

关于原始查询错误,我不知道你得到了什么错误,但是django doc也有它的语法。您可能会查看确切的sql语句,因为数据库的每个sql语句都不同。这可能会解决您的问题,因为您不想升级django。

django doc about hour lookup in django 1.7

django doc about hour lookup in django 1.9