[英]django.db.utils.OperationalError: foreign key mismatch - “django_admin_log” referencing “transcript_userprofile”
[英]django.db.utils.OperationalError: foreign key mismatch in Shell command forloop
我正在研究以下兩個 Django 模型:
以用戶為外鍵的組織模型和以組織為外鍵的類別列表。
以下是模型:
# Create your models here.
from django.contrib.auth.models import User
from django.db import models
class Organisation(models.Model):
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
null=True
)
organisation_name = models.TextField(
primary_key=True,
blank=True
)
def __str__(self):
return self.organisation_name
class Category(models.Model):
# renamed organisation to organisation_name
organisation_name = models.ForeignKey(
Organisation,
on_delete=models.SET_NULL,
null=True
)
category = models.TextField(
blank=True,
max_length=200
)
class Meta:
verbose_name_plural = 'Category'
現在,我的 settings.py 文件中存儲了 150 多個值的龐大列表,我想將其添加到 Category 模型中。
CATEGORY_LIST = ['value', 'value2', ...., 'valueN'] 看起來像這樣
這是我在 shell 中執行的腳本:
from Venter.models import Organisation, Category
from Backend import settings
cat_list = settings.CATEGORY_LIST # the list is getting loaded into cat_list
org_name = Organisation.objects.get(organisation_name='ABC') # exists
for x in cat_list:
Category.objects.create(organisation=org_name, category=x)
但是我遇到以下錯誤:
django.db.utils.OperationalError: foreign key mismatch - "Mysite_category" referencing "Mysite_organisation"
其中: Mysite 是我在 Django 項目中的應用程序名稱。
(代表問題作者發布解決方案) 。
Python解釋器錯誤地引用了“組織”模型而不是“類別”模型的“組織”字段,這是一個命名約定問題。 我現在已經解決了
Mysite_category 的 id 沒有 PK。 第二個表 Mysite_organisation 相同。
CREATE TABLE "Mysite_category" (
"id" integer NOT NULL,
"name" varchar(255) NOT NULL,
"description" text NOT NULL,
PRIMARY KEY("id" AUTOINCREMENT)
);
關注 id 並且相同的查詢將用於第二個表。 這並不重要,您必須通過此查詢將 id 設為主鍵。 有很多選擇可以做到這一點。 把id設為PK,就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.