django.db.utils.OperationalError: несоответствие внешнего ключа в команде Shell forloop - PullRequest
0 голосов
/ 07 января 2019

Я работаю над следующими двумя моделями 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'

Теперь у меня есть огромный список из 150+ значений, хранящихся в моем файле settings.py, которые я хочу добавить в модель категории .

CATEGORY_LIST = ['value', 'value2', ...., 'valueN'] выглядит следующим образом

Это скрипт , который я выполняю в оболочке :

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.

1 Ответ

0 голосов
/ 06 июня 2019

(Размещено решение от имени автора вопроса) .

Интерпретатор Python неверно ссылался на модель «Организация», а не на поле «организация» модели «Категория», это была проблема соглашения об именах. Я теперь решил это

...