Django 查询 - 使用日期比较中的布尔值注释

Django Query - Annotate With Boolean Value From Date Comparison

我想编写一个查询,该查询将根据模型中的日期与现在的 date/time 的比较来注释已过期,并根据结果接收一个布尔值。我找不到这是怎么做到的。

到目前为止我已经尝试过以下方法:

.annotate(expired=F( F('date_updated') > datetime_now))

谁能告诉我实现这个的方法?

查看 extra/select 表达式的手册 https://docs.djangoproject.com/en/3.2/ref/models/querysets/#django.db.models.query.QuerySet.extra 然后这样做:

Entry.objects.extra(select={'expired': "date_updated < '2006-01-01'"})

您可以使用 BooleanField 注释对象,这是条件的结果 ExpressionWrapper [Django-doc]:

from django.db.models import BooleanField, <b>ExpressionWrapper</b>, Q

MyModel.objects.annotate(
    expired=<b>ExpressionWrapper(</b>
        Q(date_updated__gt=datetime_now),
        output_field=BooleanField()
    <b>)</b>
)