Gus*_*yes 5 python django compare filter
如何比较django查询中的两个字段?
基本上我想要的是将任务延迟和on_time分成两个查询.
当今天和请求日期之间的差异超出容忍天数时,任务会延迟.
现在我有这个:
def dayssince(value):
if value is None:
return '0'
#"Returns number of days between today and value."
today = datetime.date.today()
diff = today - value
if diff.days > 1:
return '%s' % diff.days
elif diff.days == 1:
return '1'
elif diff.days == 0:
return '0'
else:
# Date is in the future; return formatted date.
return value.strftime("%B %d, %Y")
on_time = process.(Department__Tolerance__gte=dayssince(F('Request_date'))).annotate(Counter=Count('Client'))
delayed = process.(Department__Tolerance__lte=dayssince(F('Request_date'))).annotate(Counter=Count('Client'))
Run Code Online (Sandbox Code Playgroud)
但我得到属性错误: 'ExpressionNode'对象没有属性'days'
小智 0
F 表达式不会返回要在 Python 中使用的值,因此您的函数是在 SQL 表达式上调用的,因此会出现错误。它们用于封装数据库操作。Python 永远看不到字段值。
您可以在 F 表达式中使用许多其他运算:F 支持的运算。特别是,您可以使用Python timedelta 对象来比较日期;请参阅Filters 中的 F 表达式。