是否可以将变量与django查询中的两个完整数据库字段进行比较?

时间:2015-08-25 18:19:44

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

我会尝试创建一个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