2012-07-05 28 views
38

我想實現一個待辦事項列表網站來練習使用Django。在models.py中,我有一個名爲Item的類來表示待辦事項。在這裏面,我有以下行:如何使Django的DateTimeField可選?

due_date = models.DateTimeField(required=False) 

DUE_DATE意味着是一個可選字段的情況下,用戶對一些待完成項目的最後期限。問題是由於意外的關鍵字參數'required',上面的代碼給了我一個TypeError。

因此,我似乎無法使用DateTimeField的關鍵字參數'required'。有什麼辦法可以讓DateTimeField成爲可選的嗎?或者是否有針對我遇到的問題的標準實施?

+4

'required'僅用於*表單*字段。模型字段使用'blank = True',爲了允許爲數據庫中的列存儲NULL值,它必須與'null = True'結合使用。否則,你會得到一個'IntegrityError'。 – 2012-07-05 20:07:21

回答

63

「required」是Django表單的有效參數。對於模型,您需要關鍵字args blank=True(用於管理員)和null=True(用於數據庫)。

+1

啊,所以我得到形式和模型混合起來。哎呀。 – 2012-07-05 20:07:09

+1

感謝您解釋'required','blank'和'null'之間的區別。 – aero 2016-08-22 21:48:18

+0

IIRC'blank = True,null = True'不推薦用於文本字段,因爲那樣你可以有兩個「空」:''''和'NULL',但是這不適用於日期型字段嗎? – 2017-12-14 17:53:28

21

使用 due_date = models.DateTimeField(null=True, blank=True)

檢查Field Options以獲取更多信息。

+0

我們是否需要添加'required = False',或者這兩個是否足夠?如果我們添加或不添加任何差異? – jeff 2016-10-26 13:31:52

+1

@halilpazarlama在你的模型字段中你不需要'required = False',而且它在模型字段定義中甚至不是有效的關鍵字參數。 'required = *'可以在表單字段中使用,如果在模型字段定義中已經有'blank = True',則仍然不需要。 – machaku 2016-10-27 07:22:31

+0

哦。我應該更徹底地閱讀其他答案。謝謝,雖然:) – jeff 2016-10-28 01:32:53