在Django中我用下面的models.py文件manage.py makemigrations
和manage.py migrate
不可爲空場:Django的:沒有默認
class Family(models.Model):
comment1 = models.CharField(max_length=80)
#comment2 = models.CharField(max_length=80)
這個初始化成功後,我改變了models.py到(我只是取消註釋這基本上是其他模型場的副本)的新模式場:
class Family(models.Model):
comment1 = models.CharField(max_length=80)
comment2 = models.CharField(max_length=80)
現在,當我嘗試makemigrations
我再次碰到下面的錯誤:
您嘗試添加不可爲空場「註釋」家庭不 默認;我們不能這樣做(數據庫需要一些東西來填充 現有的行)。
請選擇修復:
1)提供一次性默認現在 (將所有現有的行與空值此列集)
2)退出,並讓我在models.py中添加一個默認值選擇一個選項:
爲什麼我在初始化初始化時沒有得到這個錯誤?
因爲您是從頭開始創建表。現在,正如錯誤明確指出的那樣,數據庫需要一些東西來填充現有的行。 –
但沒有現有的行。就像我初始化時一樣! – user3182532
好吧我想我明白了。儘管沒有現有的行,原則上可能存在。然後Django不知道如何保存現有行的「comment2」,因爲它不能將它們保存爲null,並且它們沒有值。在Django知道的第一次遷移中:我創建了一個表,因此沒有以前的數據,因此null = False +沒有默認值是可以的。用戶將只能保存具有「comment1」值的對象,但這是他的問題。 – user3182532