Допустим, используя новую среду миграции 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
Я могу легко исправить это, добавив null=True
к field_2
, но соглашение Django состоит в том, чтобы избегать использования null в строковых полях, таких как CharField и TextField (из https://docs.djangoproject.com/en/dev/ref/models/fields/). Это ошибка, или я неправильно понимаю документы?