#django #django-models #django-migrations
Вопрос:
У меня была модель Django, определенная как:
from users.models import User
class Record(models.Model):
user = models.ForeignKey(
User,
on_delete=SET_NULL,
null=True)
...
Я понял, что было бы лучше переписать приведенную выше модель как:
from userprofile.models import UserProfile
class Record(models.Model):
user = models.ForeignKey(
UserProfile,
on_delete=SET_NULL,
null=True)
....
Как я могу перенести (чтобы использовать новое определение модели Record
), не теряя старые Record
экземпляры в базах данных? Каков общий процесс таких миграций? Потому что , если я мигрирую с новым определением Record
, я потеряю доступ к старым Record
объектам, поэтому я не смогу их обновить. Однако, если я не мигрирую, Django не позволит мне использовать UserProfile
его в качестве user
поля.
Ответ №1:
Таким образом, переносить нечего, так как user
это атрибут Python, и нет столбца резервной базы данных, поскольку он не определен как внешний ключ.
В этом случае Django обработает это автоматически, так как обнаружит изменение имени модели и изменит имя таблицы на стороне БД, а затем обновит таблицу ссылок для таблицы записей.
вы можете запустить python manage.py makemigrations
и просмотреть созданные миграции.
Комментарии:
1. Извините, я слишком упростил свой вопрос. Это действительно внешний ключ. Я обновил вопрос.