mongoengine 日期时间字段与 Python 日期时间
我遇到了一个问题,这个问题在我其他的应用中没有出现过。
我的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 这两个地方的末尾多了一个逗号,这就是造成混乱的原因。
把这个逗号去掉后,一切就正常了。 :)