#python #django #django-models #field #mysql-python
#питон #джанго #django-модели #поле #mysql-python
Вопрос:
Я создал модель для сообщений в Django, и я пытаюсь обновить одно из полей в базе данных (MySQL). У меня есть следующий блок кода: model.py
class Post (models.Model):
title = models.CharField()
preamble = models.CharField()
body = models.TextField ()
createdAt = models.DateTimeField(auto_now_add=True, blank=True)
Я хочу добавить еще одно поле с именем author author=models.ForeignKey(User, on_delete=models.CASCADE
Кроме того, я хочу изменить имя одного из полей с preamble
на introduction
Всякий раз, когда я запускаю команду python manage.py makemigrations
, а затем python manage.py migrate
я получаю сообщение об ошибке, которое завершает процесс миграции. это говорит мне, что поле preamble
, которое у меня есть в моей базе данных, не распознается. Можно ли обновить preamble
до introduction
?
Ответ №1:
- Перед любыми изменениями убедитесь, что у вас есть миграция начального состояния вашего приложения.
- Переименуйте
preamble
поле вintroduction
в вашей модели, не внося никаких других изменений. - Выполнить
makemigrations
. Он должен спросить вас, было ли это переименованием. - Добавьте
author
внешний ключ. - Выполнить
makemigrations
. Он должен запросить у вас значение по умолчанию для поля user, если оно не обнуляется;1
надеюсь, следует ссылаться на первого пользователя, созданного в вашей системе. - Выполнить
migrate
.
Ответ №2:
Это должно быть работой:
- удалите базу данных SQLite, а также каталог миграций
- измените модель
- затем выполните команду migrate