比较两个字段django filter

时间:2014-05-27 17:01:11

标签: python django filter compare

如何比较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'对象没有属性'天

1 个答案:

答案 0 :(得分:0)

F表达式不返回要在Python中使用的值,因此在SQL表达式上调用函数,因此出错。它们用于封装数据库操作。 Python永远不会看到字段值。

您可以在F表达式中使用许多其他操作:Supported Operations with F。特别是,您可以使用Python timedelta对象来比较日期;见F expressions in Filters