@Maruf995
Backend Developer

Не могу сделать миграцию, как это решить?

Когда пишу python manage.py makemigrations он мне выдает

You are trying to add a non-nullable field 'author' to review without a default; we can't do that (the d
atabase needs something to populate existing rows).
Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
 2) Quit, and let me add a default in models.py
Select an option:

Вот сам код:

class Review(models.Model):
    author = models.CharField(max_length=100)
    text = models.CharField(max_length=100)
    movie = models.ForeignKey(Movie, on_delete=models.CASCADE)

    def __str__(self):
        return self.author
  • Вопрос задан
  • 502 просмотра
Решения вопроса 1
Vindicar
@Vindicar
Ну ты хоть понял, что он от тебя хочет?
Ты добавляешь поле в таблицу. Значит, нужно решить, какое значение это новое поле примет в уже существующих строках.
По умолчанию при таком добавлении уже существующие строки в таблице получат в эти поля NULL. Но ты указал, что поле не может принимать значение NULL.
Тогда следует использовать значение по умолчанию. Но ты не указал значение по умолчанию в описании модели.
И скрипт тебе предлагает два варианта.
1. Ввести значение, которое скрипт здесь и сейчас подставит в уже существующие строки в БД вместо NULL. Модель не будет изменена.
2. Вручную в модели прописать значение по умолчанию и перезапустить скрипт. Он использует это значение по умолчанию для существующих строк вместо NULL.
Решай сам, что лучше.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@deliro
Агрессивное программирование
Ты добавил поле, поле это не может быть NULL. Но в базе уже могут находиться записи, которые, очевидно, не содержали этого поля (потому что ты его только что добавил). А значит, всем существующим записям нужно что-то поставить в это поле.

Хотя достаточно было перевести текст, там ведь тоже самое написано.
Ответ написан
AlexNest
@AlexNest
Работаю с Python/Django
Для начала - перевести ошибку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы