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

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

Заранее спасибо за помощь.


person Somesh    schedule 21.03.2013    source источник
comment
Что-то здесь очень не так: sprint = Sprint.objects.get(sequence=1) должен возвращать один объект, а не набор запросов. Опять же, получение атрибута должно возвращать значение, а не поле. Можете ли вы проверить свою версию и установку, если она также не работает в оболочке, вы можете исключить торнадо из-за проблемы.   -  person Ross    schedule 21.03.2013
comment
Привет, Росс. Да, это моя вина, что я написал это как набор запросов. Я извиняюсь за это и отредактирую. Остальное верно, моя версия mongoengine 0.6.20. Вчера я даже понизил его до 0.6.7, который отлично работает в системе моих сверстников, но все же я получаю ту же ошибку, но еще не устраненную. :(   -  person Somesh    schedule 22.03.2013
comment
Я бы использовал ipdb и отследил ошибку, убедившись, что у вас установлен правильный mongoengine и в вашей системе нет других версий. Также какую версию python вы используете?   -  person Ross    schedule 22.03.2013


Ответы (1)


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

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

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

person Somesh    schedule 24.03.2013
comment
Вы можете принять свой собственный ответ или даже удалить вопрос, так как он вряд ли кому-то будет полезен. - person Jérôme; 31.08.2016