如何比较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'))
但是我收到了属性错误: 的' ExpressionNode'对象没有属性'天
答案 0 :(得分:0)
F表达式不返回要在Python中使用的值,因此在SQL表达式上调用函数,因此出错。它们用于封装数据库操作。 Python永远不会看到字段值。
您可以在F表达式中使用许多其他操作:Supported Operations with F。特别是,您可以使用Python timedelta对象来比较日期;见F expressions in Filters。