两个字段之间的时间增量 [英] Timedelta between two fields
问题描述
我正在寻找两个字段之间的时间间隔大于一定天数的对象。
I'm looking for objects where the timedelta between two fields is greater than a certain number of days.
Baiscally我有个发送信件的日期,以及获得批准的日期。假设在30天之内未收到批准,则这些对象应包含在查询集中。
Baiscally I have a date when a letter is sent, and a date when an approval is received. When no approval is received in let's say 30 days, then these objects should be included in the queryset.
我可以执行以下操作,其中增量是静态的。
但是我不需要 datetime.date.today()
作为开始,但需要与另一个对象进行比较。
I can do something like the below, where the delta is something static.
However I don't need datetime.date.today()
as a start but need to compare against the other object.
delta = datetime.date.today() - datetime.timedelta(30)
return qs.filter(letter_sent__isnull=False)\
.filter(approval_from__isnull=True)\
.filter(letter_sent__gte=delta)
任何指针该怎么做?
推荐答案
听起来像您想用 F
对象。像这样的东西:
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)
这篇关于两个字段之间的时间增量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!