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>
)
我想编写一个查询,该查询将根据模型中的日期与现在的 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>
)