【发布时间】:2019-05-24 16:51:14
【问题描述】:
我正在尝试在我的应用程序中创建管理器方法,以过滤已在 5/10/15 分钟或任何时间创建的电子邮件对象,从现在开始计数。
虽然我将使用 annotate 创建新参数,它将是 bool 并且他的状态取决于简单的除法减法并检查结果是否大于 0。
from django.db.models import F
from django.utils import timezone
delta = 60 * 1 * 5
current_date = timezone.now()
qs = self.annotate(passed=((current_date - F('created_at')).seconds // delta > 0)).filter(passed=True)
Atm 我的错误说:AttributeError: 'CombinedExpression' object has no attribute 'seconds'
很明显,((current_date - F('created_at')) 的计算结果不是 datetime.timedelta 对象,而是 CombinedExpression 对象。
我看到了更多问题,即如何将表达式与 0 进行比较?
无论如何,如果我接近实现我的目标或者我这个查询背后的整个逻辑不正确,我将不胜感激任何提示
【问题讨论】:
标签: django python-3.x django-managers