2017-01-23 86 views
0

我試圖運行此查詢:谷歌應用程序引擎NDB查詢錯誤添加三角洲日期

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

但引發此錯誤:

TypeError: unsupported operand type(s) for +: 'DateTimeProperty' and 'datetime.timedelta'

型號:

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

我可以在查詢中添加timedelta到日期嗎?

回答

0

將Model.created轉換爲datetime.datetime對象,它將返回一個您可以使用的datetime.timedelta對象。

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) 

而且,正確的語法是>=,不=>

+0

我已經更新的問題,所以它不可能添加一個timedelta直接在查詢中? – rena

+0

試試上面的代碼。錯誤告訴你'Model.created'是一個'DateTimeProperty',而不是你想要的實體的實際屬性。 – GAEfan