在Django中,我希望能夠在模型(或至少數據庫)級別標記某些模型字段,以確保在創建對象時明確指定它們(即不依賴於默認值)。在Django中,如何才能最好地標記模型字段?
目前,Django允許您根據需要在表格級別(通過在模型中指定blank=False
)指定模型字段。但是,似乎沒有類似的選項可以在模型或數據庫級別獲得此行爲。
雖然看起來好像有各種各樣的黑客來實現類似的東西。例如,您可以將default
設置爲違反數據庫約束的內容。例如,你可以做這樣的事情:
models.CharField(_('characters'), max_length=4, default=None)
或
models.CharField(_('characters'), max_length=4, default="abcdef")
前者的例子,因爲None
保存到數據庫時的作品侵犯了默認的null=False
非空約束(提高的IntegrityError
)。後者的工作原因是保存時引發DataError
。但我不知道這是否可以在所有數據庫中正常工作,等等。
我錯過了什麼,還是有更好的方法?
空白=真/假* *是允許在模型級別。請參閱https://docs.djangoproject.com/en/dev/ref/models/fields/#blank對於CharField,它不是數據庫約束,只是表單驗證約束。我認爲如果你做了一個model.full_clean(),然後model.save(),空白= False檢查將執行。 – Nils
@CantucciHQ,我明白這一切。按照「在模型級別所要求的」,我的意思是我希望執行/驗證發生在模型級別,即使表單API沒有被使用。 – cjerdonek