首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤django中在特定时间之前或之后添加的对象

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

Stack Overflow用户
提问于 2016-02-01 22:06:01
回答 1查看 261关注 0票数 2

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

代码语言:javascript
复制
class Task(models.Model):
    start_time = models.DateTimeField(null=True, blank=True)
    finish_time = models.DateTimeField(null=True, blank=True)

我想用hours、gtelte过滤字段start_timeend_time,这样我就可以得到包含任务对象的查询集,这些对象必须在特定时间开始,并在特定时间结束。我尝试过的

代码语言:javascript
复制
Task.objects.filter(start_time__hour__gte=2)
Task.objects.filter(end_time__hour__lte=2)

但是这个查询给出了错误

代码语言:javascript
复制
    FieldError: Unsupported lookup 'hour' for DateTimeField or join on the field not permitted.

我也尝试过queryset.raw,它提供了正确的值,但在与django-filters包一起使用时出现错误。

代码语言:javascript
复制
def start_time_filter(self, queryset, value):
    if value.isdigit():
        return queryset.raw("select * from app_task WHERE TIME(`start_time`) >= '{0}';".format(value))

    return queryset.none()

帮助将被评估

EN

回答 1

Stack Overflow用户

发布于 2016-02-01 22:23:56

我不确定这一点,但通过阅读文档,听起来hour__gte=2语法只是在Django1.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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35132551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档