0

我面临以下我在其他应用程序中没有遇到的问题。

我的 Sprint 数据模型:

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。我没有为我当前的项目升级它,并且一直在我的所有项目中使用它。我正在使用 tornado 作为网络服务器

如何将 mongoengine 日期时间字段转换为与 python 日期时间实例兼容。

在此先感谢您的帮助。

4

1 回答 1

0

错误在于数据模型定义本身。一种类型导致了这一切。:(

start_date 和 end_date 最后有一个“,”,这会产生噪音。

取下它后,它会滚动。:)

于 2013-03-24T14:23:32.677 回答