Нужна помощь в Django 2x, (ограничение FOREIGN KEY не выполнено) - PullRequest
0 голосов
/ 18 февраля 2020

Привет всем, я сделал простой режим, и моя проблема в том, что когда я пытаюсь сделать ИНОСТРАННЫЙ КЛЮЧ в моей модели, он показывает мне это сообщение об ошибке, было бы здорово, если вы могли бы помочь, вот код

Модель .py:

from django.db import models
from django.utils import timezone

# Create your models here.
class category(models.Model):
    title=models.CharField(max_length=100,default='')
    def __str__(self):
        return self.title
class gigpost(models.Model):

    title=models.CharField(default='',max_length=100)
    Category=models.OneToOneField(category,on_delete=True,default='')
    published_at=models.DateTimeField(auto_now_add=True)
    description=models.TextField(default='',max_length=None)
    mainphoto=models.ImageField(default='')
    photo=models.FileField()
    def __str__(self):
        return self.title

Admin.py

from django.contrib import admin
from .models import gigpost , category

# Register your models here.
admin.site.register(gigpost)
admin.site.register(category)

сообщение об ошибке:

IntegrityError at /admin/gigpost/category/add/
FOREIGN KEY constraint failed
Request Method: POST
Request URL:    http://127.0.0.1:8000/admin/gigpost/category/add/
Django Version: 2.2.5
Exception Type: IntegrityError
Exception Value:    
FOREIGN KEY constraint failed
Exception Location: C:\Users\Madara\Miniconda3\envs\myEv\lib\site-packages\django\db\backends\base\base.py in _commit, line 240
Python Executable:  C:\Users\Madara\Miniconda3\envs\myEv\python.exe
Python Version: 3.7.6
Python Path:    
['C:\\Users\\Madara\\Desktop\\empliya\\empliya',
 'C:\\Users\\Madara\\Miniconda3\\envs\\myEv\\python37.zip',
 'C:\\Users\\Madara\\Miniconda3\\envs\\myEv\\DLLs',
 'C:\\Users\\Madara\\Miniconda3\\envs\\myEv\\lib',
 'C:\\Users\\Madara\\Miniconda3\\envs\\myEv',
 'C:\\Users\\Madara\\Miniconda3\\envs\\myEv\\lib\\site-packages']
Server time:    Tue, 18 Feb 2020 19:34:39 +0000

1 Ответ

0 голосов
/ 18 февраля 2020
category=models.OneToOneField(Category, on_delete=models.PROTECT, default='')

вместо

Category=models.OneToOneField(category,on_delete=True,default='')

также имя класса должно быть в верхнем регистре:

class Category(models.Model):
class Gigpost(models.Model):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...