IntegrityError主键无效(python-django)

时间:2019-08-18 17:37:50

标签: python django python-3.x django-models

我正在查看senddex课,但出现此错误,为什么?

我在这里看到了类似的问题,但无法获得答案


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

下面是错误的样子:

  

django.db.utils.IntegrityError:表'main_tutorial'中的行带有   主键“ 1”具有无效的外键:   main_tutorial.tutorial_series_id包含的值“ 1”不包含   在main_tutorialseries.id中有一个对应的值。

1 个答案:

答案 0 :(得分:1)

答案:

tutorial模型上,您是否将外键tutorial_series定义为:

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

此FK(外键)的默认值为 1 ,但是,在执行代码时,您试图保存tutorial,但它们不是{ {1}}和tutorial_series

尝试创建一个Id = 1(Id = 1),或者仅将默认值更改为None。像这样:

tutorialseries

关于您的问题:

您设置了该帖子的标题:

  

IntegrityError主键无效(python-django)

但是,无效的不是主键。 外键无效。