这是我当前拥有的代码。
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
答案 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')]