两个字段之间的时间增量 [英] Timedelta between two fields

查看:95
本文介绍了两个字段之间的时间增量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找两个字段之间的时间间隔大于一定天数的对象。

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆