Django.db.utils.ProgrammingError: нет уникального ограничения, соответствующего заданным ключам для ссылаемой таблицы
У меня проблема с Django 2.2.7 и postgresql 12 при использовании команды "python manage.py migrate".
Когда я выполняю его, процесс завершается со следующей ошибкой: django.db.utils.ProgrammingError: there is no unique constraint matching given keys for referenced table "clients_clients"
Я понимаю, что эта ошибка указывает на то, что когда поле используется в качестве правящего ключа в другой таблице, это поле должно быть уникальным.
Моими клиентами модели в Django являются:
class Clients(models.Model):
name = models.CharField(max_length=60, unique=True)
document_num = models.CharField(max_length=15)
phone = models.CharField(max_length=15, blank=True)
email = models.EmailField(max_length=30, blank=True)
instagram = models.CharField(max_length=30, blank=True)
address = models.TextField(max_length=100, blank=True)
Модель с правящим ключом к полю "имя" clients_clients является:
class Budgets(models.Model):
date = models.DateField(error_messages={'null': "You must set a date"})
title = models.CharField(max_length=50, unique=True)
client = models.ForeignKey(Clients, null=True, on_delete=models.SET_NULL, to_field='name')
price = models.DecimalField(default=0, decimal_places=2, max_digits=10)
observations = models.TextField(max_length=200, blank=True)
Как показано выше, поле "name" в модели "Clients" установлено как unique=True. Но, несмотря на это, возникает упомянутая ошибка.
Кто-нибудь может помочь мне понять почему?
Я могу решить эту проблему.
Проблема в том, что поскольку я скопировал свое приложение Django из существующей установки в новую, в папках app существует множество файлов миграции.
Сначала мне пришлось удалить все файлы внутри папок "migrations" в любом приложении моего проекта Django (следя за тем, чтобы не удалить файл init.py).
Затем я снова выполнил команды: python manage.py makemigrations
и
python manage.py migrate
Теперь все работает нормально.