簡體   English   中英

django.db.utils.ProgrammingError:沒有唯一約束匹配引用表的給定鍵

[英]django.db.utils.ProgrammingError: there is no unique constraint matching given keys for referenced table

我在使用命令“python manage.py migrate”時遇到了 Django 2.2.7 和 postgresql 12 的問題。

當我執行它時,該過程失敗並出現以下錯誤:django.db.utils.ProgrammingError:沒有唯一約束匹配引用表“clients_clients”的給定鍵

我理解這個錯誤表明當一個字段被用作另一個表中的外鍵時,這個字段必須是唯一的。

我在 Django 中的 model 客戶端是:

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字段“name”的外鍵的model是:

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)

如上圖,model“Clients”中的“name”字段設置為unique=True。 但盡管如此,還是顯示了提到的錯誤。

任何人都可以幫助我理解為什么?

我可以解決問題。

問題是當我將 Django 應用程序從現有安裝復制到新安裝時,應用文件夾中存在大量遷移文件。

首先,我必須在我的 Django 項目的任何應用程序中刪除“遷移”文件夾中的所有文件(注意不要刪除init .py 文件)。

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

python manage.py 遷移

現在,一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM