2013-03-21 116 views
0

我面臨以下問題,我沒有遇到過我的其他應用程序。mongoengine datetime字段和python日期時間

我的衝刺數據模型:

import mongoengine as me 

class Sprint(me.Document): 
    start_date = me.DateTimeField(), 
    end_date = me.DateTimeField(), 
    sequence = me.IntField(required=True, default=0) 

在殼我嘗試以下:

sprint = Sprint.objects.get(sequence=1) 
sprint 
<Sprint: Sprint object> 

sprint.start_date - datetime.utcnow() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    TypeError: unsupported operand type(s) for -: 'tuple' and 'datetime.datetime' 

然後我印刷sprint.start_date 它返回一個元組,而不是DateTime對象如下:

sprint.start_date 
(<mongoengine.fields.DateTimeField object at 0x22b7dd0>,) 

所以我做了

sprint.start_date[0] - datetime.utcnow() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    TypeError: unsupported operand type(s) for -: 'DateTimeField' and 'datetime.datetime' 

我之前的項目沒有遇到過這個問題。我目前的mongoengine版本是0.6.20。我沒有爲我目前的項目提供註冊,並且一直在爲我的所有項目使用它。 我正在使用龍捲風作爲web服務器

如何將mongoengine datetime字段轉換爲兼容python datetime實例。

在此先感謝您的幫助。

+0

東西是非常錯誤的位置: 衝刺=衝刺。 objects.get(sequence = 1)應該返回單個對象而不是查詢集。再次獲取屬性應該返回值而不是字段。你可以檢查你的版本和安裝,如果它也破壞了外殼,那麼你可以排除龍捲風是一個問題。 – Ross 2013-03-21 12:14:26

+0

Hi Ross, 是的,這是我寫它作爲查詢集的錯。我對此表示歉意,並會對其進行編輯。休息是正確的我的mongoengine版本是0.6.20。昨天,我甚至將它降級到0.6.7,這對我的同伴系統來說工作正常,但我仍然得到相同的錯誤,但仍然沒有解決。 :( – Somesh 2013-03-22 04:21:22

+0

我會用ipdb並跟蹤錯誤,確保你已經安裝了正確的mongoengine,並且沒有其他版本在你的系統上。你還可以使用什麼版本的python? – Ross 2013-03-22 11:01:46

回答

0

錯誤在數據模型定義本身。一種類型導致所有這些。 。:(

起始日期日期和結束日期有「」在其中創建噪聲結束

取出後,它推出:)

+0

你可以接受你自己的答案,或者事件刪除問題因爲它不可能對任何人有幫助。 – 2016-08-31 10:11:50