Django过滤日期,其中timedelta day var等于一个模型字段



我试图用模型整数字段填充timedelta参数天,但它说没有定义。

query = POPlan.objects.filter(Q(status="INCOMPLETE") | Q(status="PARTIAL"),
date_created__date__lte=timezone.now().date()-datetime.timedelta(days=
(supplier__expectedDuration)))

供应商字段是我的POPlan模型中的外键关系,并且具有预期持续时间的整数字段。对如何实现这个代码有什么建议吗?

您需要一个F()表达式引用的其他模型的字段值。ExtractDays()-Function '应该允许您从时间增量中提取天数。

from djano.utils import timezone
from django.db.models import F, Q, DurationField
from django.db.models.functions import Cast, ExtractDay
query = POPlan.objects.filter(Q(status="INCOMPLETE") | Q(status="PARTIAL"))
query = query.annotate(
diff=ExtractDay(Cast(timezone.now().date-F("date_created__date"), 
output_field=DurationField()
))
).filter(diff__gt=F("supplier__expectedDuration"))

相关内容