Удалил id модели Django, как вернуть?

Использую Django.

В models.py были такие модели:

class Stat(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)

class Product(models.Model):
    articul = models.CharField(max_length=100, unique=True)

Я решил изменить структуру модели Product на

class Product(models.Model):
    articul = models.CharField(max_length=100, unique=True, primary_key=True)

Теперь, при любом запросе к базе данных приходит ошибка

operator does not exist: character varying = integer django

База у меня очень большая, меня волнует два вопроса:

  1. Это можно исправить не потеряв связи с таблицами?
  2. Может можно вернуть старые id для таблицы? В этом случае могут слететь связи таблиц?

Заранее благодарен, проблема очень серьёзная, так как делал все на prod сервере


Ответы (1 шт):

Автор решения: Sergey S.

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

По умолчанию поле ForeignKey ссылается на id-поле указанной модели. В вашем случае поле product ссылается на поле id в модели Product. Поле id создается по умолчанию и имеет аргумент primary_key=True. Все записи поле хранит в числах. Вы изменили первичный ключ модели и теперь Django не может использовать строку вместо числа.

→ Ссылка