django.db.utils.ProgrammingError:引用表没有与给定键匹配的唯一约束



Django 2.2.7和postgresql12使用命令";python manage.py migrate";。

当我执行它时,进程失败,并出现以下错误:django.db.utils.ProgrammingError:没有与引用表的给定键匹配的唯一约束;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)

具有外地钥匙的模型";name";客户端的数量为:

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";在模型"中;客户";设置为unique=True。尽管如此,所提到的错误还是显示出来了。

有人能帮我理解为什么?

我可以解决这个问题。

问题是,当我将Django应用程序从现有安装复制到新安装时,应用程序文件夹中存在大量迁移文件。

首先,我必须删除";迁移";Django项目的任何应用程序中的文件夹(注意不要删除init.py文件(。

然后我再次运行命令:python manage.py makemigrations

python manage.py迁移

现在,一切都很好。

最新更新