Django的文檔說:Django的CharField不默認爲空字符串
避免使用空的基於字符串的領域,如CharField和 文本字段,因爲空字符串值總是會被存儲爲空 字符串,而不是空值。
所以我建立我的模型像
class Address(models.Model):
address_num = models.TextField()
street_predir = models.CharField(max_length=2, default='') # optional
street_name = models.TextField()
street_suffix = models.CharField(max_length=4, default='') # optional
street_postdir = models.CharField(max_length=2, default='') # optional
,然後創建一個缺少可選字段
raw_address = '1234 MAIN ST'
# Run this through an address parser - this returns a dictionary of address components
# Optional fields are returned as None if not present
components = parser.parse(raw_address)
address = Address(**components)
address.save()
的對象,但我得到的錯誤
null value in column "street_predir" violates not-null constraint
DETAIL: Failing row contains (8633570, 2057 ANCHOR ST, 2057, null, ANCHOR, ST, null, null, null, ANCHOR ST, null, null,)
任何人都可以解釋爲什麼這不是默認爲空的條紋NG? FWIW我正在使用Django 1.7.4和Postgres DB。
不需要'default =''',你應該使用'blank = True'來允許表單中的空值。你可以發佈traceback和可能的內容'from django.db import connection;打印(connection.queries)'? – knbk 2015-03-30 18:04:14
您還可以發佈創建對象的代碼或任何自定義保存方法嗎?某處,你明確地設置了'None'而不是一個空字符串。 – knbk 2015-03-30 18:17:45