2013-07-02 138 views
1

日期時間考慮下面的Django模型的Django模型:創建與字符串

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
+0

「對時間字段輸入數據時,將要接受的格式元組」 - 啊,所以這是一個模型字段,而不是一個表單域?爲什麼'ts.date'不是'datetime'? –

+0

正確,請查看文檔:https://docs.djangoproject.com/en/dev/ref/models/fields/#datefield。 'ts.date'不是'datetime',因爲你將它聲明爲'DateField'。嘗試'DateTimeField',看看會發生什麼:) – matino

+0

對不起,我還不清楚。爲什麼'ts.date'是'string'而不是'date'? –