如何过滤掉今天日期在计算日期范围内的对象?

时间:2019-10-02 17:33:14

标签: python sql django django-models

这是我当前拥有的代码。

X &X::operator =(const X &)

很显然,我无法在 models = Model.objects.annotate( start_range=ExpressionWrapper( F('a_date_on_the_model') + datetime.timedelta(days=-7), output_field=DateField(), ), end_range=ExpressionWrapper( F('a_date_on_the_model') + datetime.timedelta(days=-2), output_field=DateField(), ) ).filter( F('today')__range=[F('start_range'), F('end_range')] ) 上进行范围设置,因为它不是数据库列/关键字,但我只是表明我有一个今天要与之比较的变量。我觉得我已经接近了,但是可以帮忙整理一下。注意:F('today')-7将是动态的日子,例如,只是硬编码。这些数字和天数可以是正数或负数,但第一个数字将始终大于第二个数字。

编辑-这是PSQL的样子:

-2

2 个答案:

答案 0 :(得分:0)

这有点棘手,但是我认为您不需要为此使用注释。我不确定我在日期时间使用的运算符是否与您想要的完全匹配,但是如果您对此进行调整,我想您会得到想要的查询集。

# Get models where the date is less than 7 days old, but more than 2
# days old.
models = Model.objects.exclude(
    a_date_on_the_model__range=(
        today - timedelta(days=7),
        today - timedelta(days=2),
    )
)

答案 1 :(得分:0)

我今天可以注释。

today=Value(datetime.datetime.now().date(), output_field=DateField())

然后我可以做:

today__range=[F('start_range'), F('end_range')]