简体   繁体   English

IntegrityError主键无效(python-django)

[英]IntegrityError Primary Key Invalid (python-django)

I'm looking at a sentdex lesson and I have this error and why ? 我正在看一个senddex课,但出现此错误,为什么?

I saw a similar question here but couldn't get the answer 我在这里看到了类似的问题,但找不到答案


from django.db import models
from datetime import datetime
# Create your models here.

class tutorialcategory(models.Model):
    tutorial_category=models.CharField(max_length=200)
    category_summary=models.CharField(max_length=200)
    category_slug=models.CharField(max_length=200, default=1)

    class Meta:
        verbose_name_plural="Categories"

    def __str__(self):
        return self.tutorial_category

class tutorialseries(models.Model):
    tutorial_series=models.CharField(max_length=200)
    tutorial_category=models.ForeignKey(tutorialcategory,  verbose_name="Category",  on_delete=models.SET_DEFAULT)
    series_summary=models.CharField(max_length=200)

    class Meta:
        verbose_name_plural="series"

    def __str__(self):
        return self.tutorial_series


class tutorial(models.Model):
    tutorial_title=models.CharField(max_length=200)
    tutorial_content=models.TextField()
    tutorial_published=models.DateTimeField("date published", default=datetime.now())

    tutorial_series=models.ForeignKey(tutorialseries, default=1, verbose_name="series", on_delete=models.SET_DEFAULT)
    tutorial_slug=models.CharField(max_length=200, default=1)

    def __str__(self):
        return self.tutorial_title

Below is how the error looks like: 下面是错误的样子:

django.db.utils.IntegrityError: The row in table 'main_tutorial' with primary key '1' has an invalid foreign key: main_tutorial.tutorial_series_id contains a value '1' that does not have a corresponding value in main_tutorialseries.id. django.db.utils.IntegrityError:表'main_tutorial'中具有主键'1'的行具有无效的外键:main_tutorial.tutorial_series_id包含的值'1'在main_tutorialseries.id中没有对应的值。

Answer: 回答:

On tutorial model do you have a foreign key tutorial_series defined as: tutorial模型上,您是否有一个外键tutorial_series定义为:

tutorial_series=models.ForeignKey(tutorialseries, default=1, ...

This FK (Foreign Key) has as default value 1 , but, when you execute your code, you are trying to save a tutorial but they are not any tutorial_series with Id = 1 . 该FK(外键)的默认值为1 ,但是,当您执行代码时,您试图保存一个tutorial它们不是Id = 1任何tutorial_series

Try to create a tutorialseries (with Id=1) or just change the default value to None. 尝试创建一个tutorialseries (Id = 1),或仅将默认值更改为“无”。 Like this: 像这样:

tutorial_series=models.ForeignKey(tutorialseries, null=True, blank=True, ...

About your question: 关于您的问题:

You set a title of this post: 您设置了该帖子的标题:

IntegrityError Primary Key Invalid (python-django) IntegrityError主键无效(python-django)

But, what is invalid, is not the Primary Key. 但是,无效的不是主键。 What is invalid is the foreign key. 无效的是外键。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM