google app engine ndb query error添加delta到date

时间:2017-01-23 02:19:24

标签: python google-app-engine app-engine-ndb

我正在尝试运行此查询:

query = Model.query((Model.created + datetime.timedelta(hours=-6)) => date)

然而抛出了这个错误:

  

TypeError:+:'DateTimeProperty'和的不支持的操作数类型   'datetime.timedelta'

模特:

class Model(ndb.Model):
    created = ndb.DateTimeProperty(auto_now_add=True)

我可以在查询中的日期添加timedelta吗?

2 个答案:

答案 0 :(得分:0)

将Model.created转换为datetime.datetime对象,它将返回您可以使用的datetime.timedelta对象。

答案 1 :(得分:0)

在您的模型中,您有一个名为date的属性。在您的查询中,您要求Model.created。那些不一样。尝试将两者都更改为date_created以避免混淆和冲突。通过常用方法或对象调用变量确实是一个坏习惯,即使它们没有被保留。而不是使用dateModel,而是更改为更具描述性的内容。可变冲突通常很难找到。

所以,试试:

cutoff_time = some_date + datetime.timedelta(hours=-6)
query = MyModelName.query(MyModelName.date_created >= cutoff_time)

使用:

class MyModelName(ndb.Model):
    date_created = ndb.DateTimeProperty(auto_now_add=True)

另外,正确的语法是>=,而不是=>