2013-03-21 86 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