我试图在我的模型中进行迁移,但遇到了这个错误:
- 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的新手,所以请不要对我太苛刻:)
1条答案
按热度按时间nfg76nw01#
这个错误在数据不一致,而不是在你的代码中。尝试删除所有数据和迁移(我认为,您的项目处于早期开发阶段,而不是生产阶段?))
运行
manage.py flush
从表中删除所有数据。或者你可以从物理上删除你的数据库。然后用manage.py makemigrations && manage.py migrate
重新创建所有。