0

他のアプリケーションでは遭遇しなかった次の問題に直面しています。

私のスプリントデータモデル:

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 を印刷しました。

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 です。現在のプロジェクトではアップグレードせず、すべてのプロジェクトでこれを使用しています。tornado を Web サーバーとして使用しています

mongoengine の datetime フィールドを Python の datetime インスタンスと互換性のあるものに変換する方法。

よろしくお願いします。

4

1 に答える 1

0

エラーはデータモデル定義自体にあります。型がこれらすべてを引き起こしました。:(

start_date と end_date の末尾に「,」があり、ノイズが発生しています。

外すと転がります。:)

于 2013-03-24T14:23:32.677 に答える