英文:
django.db.utils.IntegrityError: Stuck with this error for days
问题
我试图在我的模型中进行迁移,但遇到了这个错误:
django.db.utils.IntegrityError: 表 'posts_article' 中主键为 '1' 的行具有无效的外键:posts_article.author_id 包含一个值 '1',该值在 posts_author.id 中没有对应值。
这是我的模型:
from django.db import models
from django.contrib.auth import get_user_model
from django.utils.timezone import now
User = get_user_model()
# 在此创建您的模型
class Author(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True)
profile_picture = models.ImageField()
def __str__(self):
return self.user.username
class Topic(models.Model):
title = models.CharField(max_length=20, blank=True, null=True)
subtitle = models.CharField(max_length=20, blank=True, null=True)
slug = models.SlugField(blank=True, null=True)
thumbnail = models.ImageField(blank=True, null=True)
def __str__(self):
return self.title
class Article(models.Model):
title = models.CharField(max_length=100, blank=True, null=True)
overview = models.TextField(null=True)
content = models.TextField(null=True)
author = models.ForeignKey(Author, on_delete=models.SET_NULL, blank=True, null=True)
thumbnail = models.ImageField(blank=True, null=True)
categories = models.ManyToManyField(Topic, blank=True, null=True)
#featured = models.BooleanField(None, default=False)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
class Meta:
ordering = ['-updated', '-created']
我已经在互联网上搜索并尝试了一些解决方案,但问题依然存在。我是Django的新手,所以请不要对我太苛刻
英文:
I'm trying to make migrations in my model but stuck with this error:
django.db.utils.IntegrityError: The row in table 'posts_article' with primary key '1' has an invalid foreign key: posts_article.author_id contains a value '1' that does not have a corresponding value in posts_author.id.
Here's my models:
from django.db import models
from django.contrib.auth import get_user_model
from django.utils.timezone import now
User = get_user_model()
# Create your models here.
class Author(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True)
profile_picture = models.ImageField()
def __str__(self):
return self.user.username
class Topic(models.Model):
title = models.CharField(max_length=20, blank=True, null=True)
subtitle = models.CharField(max_length=20, blank=True, null=True)
slug = models.SlugField(blank=True, null=True)
thumbnail = models.ImageField(blank=True, null=True)
def __str__(self):
return self.title
class Article(models.Model):
title = models.CharField(max_length=100, blank=True, null=True)
overview = models.TextField(null=True)
content = models.TextField(null=True)
author = models.ForeignKey(Author, on_delete=models.SET_NULL, blank=True, null=True)
thumbnail = models.ImageField(blank=True, null=True)
categories = models.ManyToManyField(Topic, blank=True, null=True)
#featured = models.BooleanField(None, default=False)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
class Meta:
ordering = ['-updated', '-created']
I've searched the internet and tried a few solutions but it's the same. I am totally out of solutions. I am new to Django so please don't be too hard on me
答案1
得分: 1
这是数据不一致的错误,与您的代码无关。尝试删除所有数据和迁移(我认为您的项目还处于早期开发阶段,不是在生产环境中?)
运行 manage.py flush
来从表中删除所有数据。或者您可以物理删除数据库。然后使用 manage.py makemigrations && manage.py migrate
重新创建所有内容。
英文:
This error in data inconsistency, not in your code. Try delete all your data and migrations (i think, your project in early developmentm, not in production?)
Run manage.py flush
for remove all data from tables. Or you can phisically remove you database. Then recreate all with manage.py makemigrations && manage.py migrate
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论