[英]Django 1.7 blank CharField/TextField convention
使用Django的新遷移框架,假設我具有數據庫中已經存在的以下模型:
class TestModel(models.Model):
field_1 = models.CharField(max_length=20)
我現在想向模型中添加一個新的TextField,所以它看起來像這樣:
class TestModel(models.Model):
field_1 = models.CharField(max_length=20)
field_2 = models.TextField(blank=True)
當我嘗試使用python manage.py makemigrations
遷移此模型時,出現以下提示:
You are trying to add a non-nullable field 'field_2' to testmodel without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py
我可以通過在field_2
添加null=True
來輕松解決此field_2
,但是Django的約定是避免在基於字符串的字段(例如CharField和TextField)上使用null(來自https://docs.djangoproject.com/zh-CN/dev/ref/models/字段/ )。 這是一個錯誤,還是我誤解了文檔?
這不是錯誤,而是經過記錄和合乎邏輯的。 您添加了一個新字段,該字段(按照最佳實踐,如您所注意到的那樣)不能為NULL
因此django必須為現有記錄添加一些內容-我想您希望它為空字符串。
您可以
1) Provide a one-off default now (will be set on all existing rows)
因此只需按1,然后提供''
(空字符串)作為值。
或根據建議在models.py中指定default=''
:
2) Quit, and let me add a default in models.py
注意:它可能不會在第一時間從終端退出,請再次給出該命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.