@AlexWinner

Django — DateTimeField — тип str?

Добрый день.
Использую Django 1.6.
В документации про поле DateTimeField сказано:
A date and time, represented in Python by a datetime.datetime instance

Однако на деле получается:
class Thing(models.Model):
    time_start = models.DateTimeField()

Далее вывожу:
logger.debug("Time start is %s" % thing.time_start.__class__.__name__)

Получаю:
Time start is str

Что я делаю не так? Почему не получаю datetime.datetime?
  • Вопрос задан
  • 3988 просмотров
Решения вопроса 1
Vintorez
@Vintorez
Добавлять в сигнал лишний запрос к БД не нужно. В документации написано правильно - БД не хранит это как питоновский объект datetime, но тут дело не в этом, так как сигнал получает экземпляр именно вашего класса, то и работать он должен так как вы описали класс.
В общем, у вас проблема не в получении объекта, а в его сохранении! Вероятнее всего в поле time_start вы сохраняете строку, а не объект datetime, вот и получаете строку.
Сохранять надо так:
track.time_start = datetime.datetime(2013, 8, 19, 11, 28, 58)
track.save()

Тогда и в сигнале можно будет увидеть, что тип объекта верный:
print "Time start is %s" % instance.time_start.__class__.__name__
>>> Time start is datetime
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
alternativshik
@alternativshik
print type(thing.time_start)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы