Djange Queryset .annotate - 将 45 天添加到日期字段

San*_*dra 6 django date django-queryset

我想my_date + 345使用 Django .annotate 显示天数。

在下面的代码中,

date_plus_1=ExtractYear('my_date')+1, 
Run Code Online (Sandbox Code Playgroud)

可以很好地给我年份加一,但我想要日期加 345 天。

代码:

.annotate(
    date_plus_1=ExtractYear('my_date')+1,
    #date_plus_345=('my_date' + timedelta(days=345)),
)
Run Code Online (Sandbox Code Playgroud)

当我删除#(在代码中)时,我的页面将不会生成。

经过一番搜索,我也尝试了这个:

date_plus_345=ExpressionWrapper(F('my_date') + timedelta(days=345)),
Run Code Online (Sandbox Code Playgroud)

但这也不起作用。

在 .annotate 中使用 timedelta 的正确方法是什么?

Wil*_*sem 12

您忘记指定表达式\xc2\xa0 [Django-doc]output_field=\xe2\x80\xa6的参数:ExpressionWrapper

\n
from datetime import timedelta\nfrom django.db.models import DateTimeField, ExpressionWrapper, F\n\nMyModel.objects.annotate(\n    date_plus345=ExpressionWrapper(\n        F(\'creation_date\') + timedelta(days=345),\n        output_field=DateTimeField()\n    )\n)
Run Code Online (Sandbox Code Playgroud)\n