我正在按照senddex的django Web开发教程进行操作,但是我碰壁了-错误显示:
django.db.utils.IntegrityError:表'main_tutorial'中具有主键'1'的行具有无效的外键:main_tutorial.tutorial_series_id包含的值'1'在main_tutorialseries.id中没有相应的值
我尝试删除default=1
和on_delete=models.SET_DEFAULT/CASCADE
。
我也尝试删除SQL数据库迁移。 我已经尝试过使用SQ Browser的SQ Browser尝试进行更改。
可悲的是,我已经花了数小时盯着这个,试图寻找答案,我们将不胜感激。谢谢! 代码是:
from django.db import models
from datetime import datetime
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:
# Gives the proper plural name for admin
verbose_name_plural = "Categories"
def __str__(self):
return self.tutorial_category
class TutorialSeries(models.Model):
tutorial_series = models.CharField(max_length=200, default=1)
tutorial_category = models.ForeignKey(TutorialCategory, default=1,
verbose_name="Category", on_delete=models.SET_DEFAULT)
series_summary = models.CharField(max_length=200)
class Meta:
# otherwise we get "Tutorial Seriess in admin"
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')
tutorial_series = models.ForeignKey(TutorialSeries, default=1, verbose_name="Series", on_delete=models.SET_DEFAULT)
tutorial_slug = models.CharField(max_length=200)
def __str__(self):
return self.tutorial_title
任何帮助我克服这一障碍的细节将不胜感激。谢谢!
答案 0 :(得分:0)
删除A TD Count_Less Count_More
100 0 3 2
100 1 3 2
100 2 4 1
.
.
.
103 0 0 5
103 1 1 4
.
.
.
,然后在字段import org.junit.runners.Parameterized.Parameters;
和import org.testng.annotations.Parameters;
中将default=1
更改为models.SET_DEFAULT
models.CASCADE
和
tutorial_series
答案 1 :(得分:0)
Tutorial中的第一行(通过FK)与TutorialSeries中不存在的行相关联。即错误数据。关于如何解决此问题,您有一些选择:
可能是您收到此错误,因为TutorialSeries中没有数据。因此,一种选择是删除表Tutorial上ID为1的行。这是一个简单的解决方案。
也许您在TutorialSeries中删除了FK行,在这种情况下,请将其重新添加。只需确保其ID为1,即可将PK与之关联。这可能也是一个简单的选择,尤其是在TutorialSeries中没有其他数据的情况下。
也许TutorialSeries中有数据,但没有任何具有相应FK行ID的数据。因此,另一个选择是将PK指向TutorialSeries中的另一行。换句话说,编辑不良数据。
删除迁移。更改FK默认值,然后重新进行makemigration和迁移。
答案 2 :(得分:0)
在您的字段中删除默认值 = 1 并将 models.SET_DEFAULT 更改为 models.CASCADE 就像评论中提到的 sachin mathew
然后尝试重置您的 Django 数据库 视频:-refvideo