2013-07-02 2 views
1

Учитывая следующие Джанго модель:Создание модели Django с DateTimes из строк

from django.db import models 

class TimeStamp(models.Model): 
    date = models.DateField() 

Я был удивлен, обнаружив, что я могу передать в строках вместо datetime объектов:

In [4]: ts = TimeStamp.objects.create(date="2001-12-31") 

In [5]: ts.date 
Out[5]: '2001-12-31' 

In [6]: reloaded_ts = TimeStamp.objects.get(id=ts.id) 

In [7]: reloaded_ts.date 
Out[7]: datetime.date(2001, 12, 31) 

Почему Django делаете это вместо ошибок в отношении типов? Есть ли документация для этого поведения? Какой формат времени он ожидает?

ответ

5

Да это, как ожидается, и документально:
https://docs.djangoproject.com/en/dev/ref/settings/#date-input-formats

+0

«Кортеж форматов, которые будут приниматься при вводе данных в поле даты и времени» - ах, так что это поле модели, а не поле формы ? Почему не 'ts.date'' datetime'? –

+0

Исправьте, проверьте документы: https://docs.djangoproject.com/en/dev/ref/models/fields/#datefield. 'ts.date' не является' datetime', потому что вы объявили его как 'DateField'. Попробуйте 'DateTimeField' и посмотрим, что будет :) – matino

+0

Извините, я не понял. Почему 'ts.date'' строка', а не 'date'? –