2013-03-21 2 views
0

У меня возникла следующая проблема, с которой я не сталкивался в другом приложении.mongoengine datetime field и python datetime

Мой Sprint DataModel:

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. Я не обновил его для своего текущего проекта и использовал его для всех своих проектов. Я использую торнадо в качестве веб-сервера

Как преобразовать поле datetime mongoengine в совместимый с экземпляром datetime python.

Заранее за вашу помощь.

+0

Что-то очень неправильно здесь: Спринт = Sprint. objects.get (sequence = 1) должен возвращать один объект, а не набор запросов. Снова получение атрибута должно возвращать значение, а не поле. Можете ли вы проверить свою версию и установку, если она также сломана в оболочке, тогда вы можете исключить проблему торнадо. – Ross

+0

Hi Ross, Да, это моя ошибка в написании этого запроса. Я прошу прощения за это и отредактирую его. Отдых правильный, моя версия mongoengine - 0.6.20. Вчера я даже понизил его до 0,6.7, который отлично работает на моей системе сверстников, но все же я получаю такую ​​же ошибку и все же не решен. :( – Somesh

+0

Я бы использовал ipdb и трассировал ошибку, убедитесь, что у вас установлен правильный mongoengine и нет других версий вашей системы. Также, какую версию python вы используете? – Ross

ответ

0

Ошибка в определении самого datamodel. Тип вызвал все это. .. :(

start_date и end_date имеют '' в конце концов, которая создает шум

После его удаления, она катится :)

+0

Вы можете принять свой собственный ответ или событие удалить вопрос так как это вряд ли поможет кому-либо. –

Смежные вопросы