В настоящее время у меня есть производственное веб-приложение на основе Django, содержащее несколько моделей, расположенное поверх базы данных Postgresql (Google Cloud SQL)
Во время начальной настройки была настроена одна из моделей.следующим образом:
class ExampleModel(models.Model):
id = models.CharField(max_length=60, unique=True, primary_key=True)
new_id = models.CharField(max_length=60, unique=True, null=True, db_index=True)
name = models.CharField(max_length=300, db_index=True)
tags = models.ManyToManyField(Tag, blank=True)
Поле id содержит уникальный идентификатор, такой как: AB123456789.
С тех пор я понял, что это ошибка, и хотел бы вернуть поле первичного ключа в стандартное авто-инкрементное автозаполнение, и вместо этого используйте поле 'new_id' для хранения уникального идентификатора.
Кто-нибудь может дать рекомендации о том, как я могу внести это изменение и выполнить необходимые миграции базы данных?В других моделях есть ряд полей внешнего ключа, которые в настоящее время используют поле идентификатора в приведенной выше модели, которое необходимо изменить.Как вы можете видеть из приведенного выше, между этой моделью и моделью тега также есть поле «многие ко многим».
Я попытался удалить поле id из моего файла models.py и выполнить миграцию - изначально он выдал ошибкусвязан с пустыми полями и значениями по умолчанию, поэтому я установил фиктивное значение по умолчанию в окне терминала и удалил его в файле миграции.
База данных успешно удалила поле идентификатора и сгенерировала новое поле первичного ключа Autonumber, однако ни одно изОтношения многие ко многим или по ключевым словам сохранялись после миграции.С тех пор я откатился к предыдущей версии базы данных.