mongoengine 日期时间字段与 Python 日期时间

0 投票
1 回答
2670 浏览
提问于 2025-04-17 19:52

我遇到了一个问题,这个问题在我其他的应用中没有出现过。

我的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,结果返回了一个元组,而不是我期待的日期时间对象,内容如下:

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的日期时间实例兼容的格式。

提前感谢你的帮助。

1 个回答

0

这个错误出在数据模型的定义上。一个类型引发了所有这些问题。 :(

start_date 和 end_date 这两个地方的末尾多了一个逗号,这就是造成混乱的原因。

把这个逗号去掉后,一切就正常了。 :)

撰写回答