Timedelta between two fields

蓝咒 提交于 2019-12-04 09:26:33

Sounds like you want to annotate with an F object. Something like this:

from django.db.models import DateTimeField, ExpressionWrapper, F

delta = datetime.timedelta(days=30)
expression = F('approval_from') - F('letter_sent')
wrapped_expression = ExpressionWrapper(expression, DateTimeField())
qs = qs.objects.annotate(delta=wrapped_expression)
qs = qs.filter(delta__gte=delta)

You can also make it the other way around. Just keep F("num_days") outside of timedelta because timedelta doesn't know about F().

from datetime import timedelta
expression = F('approval_from') - timedelta(days=1) * F("num_days")
wrapped_expression = ExpressionWrapper(expression, DateTimeField())
qs = qs.annotate(letter_sent_annotation=wrapped_expression)
qs = qs.filter(letter_sent__gte=letter_sent_annotation)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!