Изменение столбца с первичным ключом на внешний ключ с помощью django

Итак, у меня есть модели, похожие на следующие:

class Address(BaseModel):
    ...
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)

В то время это казалось подходящим, потому что адрес мог "принадлежать" пользователю, но недавно мне понадобилось повторно использовать эту таблицу для "заявителей", которые подобны пользователям, поэтому будут иметь доступ ко многим связанным с ними таблицам; поэтому я начал менять модели на следующие:

class Address(BaseModel):
    ...
    user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True) # unique=True where necessary
    applicants = models.ForeignKey(Applicants, on_delete=models.CASCADE, blank=True, null=True)

Проблема, похоже, заключается в том, что поле user было первичным ключом для адреса, и поэтому, хотя я достиг некоторого прогресса, преодолев начальные ошибки миграции нового поля id, которое django создает с помощью этого ответа, теперь я получаю следующую ошибку миграции:

psycopg2.errors.InvalidTableDefinition: column "user_id" is in a primary key

django.db.utils.ProgrammingError: column "user_id" is in a primary key

Похоже, что он жалуется на бывший первичный ключ, который я теперь пытаюсь превратить во внешний ключ. Кроме того, там уже присутствует большое количество данных. Я не уверен, как преодолеть эту ошибку.

Вернуться на верх