django.db.utils.IntegrityError:被这个错误困扰了好几天

uklbhaso  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(109)

我试图在我的模型中进行迁移,但遇到了这个错误:

  • 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()

# 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']

字符串
我在互联网上搜索了一些解决方案,但都是一样的。我完全没有办法了。我是Django的新手,所以请不要对我太苛刻:)

nfg76nw0

nfg76nw01#

这个错误在数据不一致,而不是在你的代码中。尝试删除所有数据和迁移(我认为,您的项目处于早期开发阶段,而不是生产阶段?))
运行manage.py flush从表中删除所有数据。或者你可以从物理上删除你的数据库。然后用manage.py makemigrations && manage.py migrate重新创建所有。

相关问题