【问题标题】:Is it posible to compare a variable to two accumalated database fields in a django query?是否可以将变量与 django 查询中的两个累积数据库字段进行比较?
【发布时间】:2015-11-19 14:06:47
【问题描述】:

我正在尝试根据给定的结束和开始时间过滤 django 查询的结果。在我的模型中,每个数据库条目都有一个开始时间和持续时间。我给函数参数 endTime 和 startTime

我想要一个过滤器来检查给定的 endTime 是否小于数据库行中给定的开始时间 + 持续时间,因此类似于以下查询:

query = Results.objects.filter(
            r_timeStart__gte=startTime,
            (F('r_timeStart') + F('r_duration'))__lte=endTime)

这显然行不通。现在是我的问题:是否可以将变量与 django 查询中的两个累积数据库字段进行比较?

【问题讨论】:

    标签: python django django-models django-queryset django-filter


    【解决方案1】:

    我会尝试创建一个annotate 字段并在过滤器中使用它。

    query = Results.objects.annotate(current_time=F('r_timeStart') + F('r_duration'))
    .filter(r_timeStart__gte=startTime, current_time__lte=endTime)
    

    Filtering on annotations

    Annotation and Aggregation in Django

    【讨论】:

    • 感谢您的提示!这就像一个魅力。但是,还有一些问题,因为我想将持续时间(间隔)添加到日期时间。我可以用这个线程解决它:code.djangoproject.com/ticket/24485
    • @cyrion1000 查询或值有问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2019-02-09
    • 1970-01-01
    • 2017-12-17
    • 2011-12-31
    • 2018-04-18
    相关资源
    最近更新 更多