今天遇到一個問題:
在restframework框架中開發,數據庫了創建了一個model的屬性如下所示:
remarks = models.CharField(verbose_name=u"描述", max_length=500, null=True)
remarks為非必傳數據,所以在serializer中沒有加驗證,當時覺得沒什么問題,但在提交數據時remarks為空字符串,報錯為‘驗證失敗,remarks不能為空’。但當remarks不傳值時則沒有報錯。
后來經過一番查找搜索,發現是沒有加blank=True的原因。
最終經過修改:
remarks = models.CharField(verbose_name=u"描述", max_length=500, null=True, blank = True)
再次提交,即使remark為空字符串,依然能提交成功。
總結如下:
1、serializer中沒有加驗證,所以remarks不傳值時可以通過,切此時默認為null。這是null=True在起作用,null是和數據庫相關的,當reamrks為空時,就會被存儲為NULL。
2、blank = True是頁面表單驗證相關的,表示在頁面當中對應的表單可以為空,可以不填任何內容。