python - IntegrityError:主键为“2”的表“main_post”中的行具有无效的外键:main_post.author_id 包含值“1”
问题描述
在makemigrations之后,然后迁移我得到了这个错误
IntegrityError:主键为“2”的表“main_post”中的行具有无效的外键:main_post.author_id 包含一个值“1”,但在 auth_user.id 中没有相应的值
我在类似问题中尝试了一些解决方案,但它不起作用
我的模型.py
User = get_user_model()
class PostView(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True)
post = models.ForeignKey('Post', on_delete=models.CASCADE, blank=True)
def __str__(self):
return self.user.username
class Comment(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
timestamp = models.DateTimeField(auto_now_add=True)
content = models.TextField()
post = models.ForeignKey('Post', related_name='comments', on_delete=models.CASCADE)
def __str__(self):
return self.user.username
class Author(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profile_picture = models.ImageField()
def __str__(self):
return self.user.username
class Category(models.Model):
title = models.CharField(max_length=40)
def __str__(self):
return self.title
class Post(models.Model):
title = models.CharField(max_length=100)
overview = models.TextField()
detail = models.TextField()
timestamp = models.DateTimeField(auto_now_add=True)
content = RichTextUploadingField(config_name='post_ckeditor')
author = models.ForeignKey(Author, on_delete=models.CASCADE)
thumbnail = models.ImageField()
categories = models.ManyToManyField(Category)
featured = models.BooleanField()
previous_post = models.ForeignKey('self', related_name='previous', on_delete=models.SET_NULL, blank = True, null = True)
next_post = models.ForeignKey('self', related_name='next', on_delete=models.SET_NULL, blank = True, null = True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={
'id': self.id
})
def get_update_url(self):
return reverse('post-update', kwargs={
'id': self.id
})
def get_delete_url(self):
return reverse('post-delete', kwargs={
'id': self.id
})
@property
def get_comments(self):
return self.comments.all().order_by('-timestamp')
@property
def view_count(self):
return PostView.objects.filter(post=self).count()
@property
def comment_count(self):
return Comment.objects.filter(post=self).count()
我的观点.py
#Some code not include in this
def post(request, id):
most_recent = Post.objects.order_by('-timestamp')[:3]
category_count = get_category_count()
post = get_object_or_404(Post, id=id)
PostView.objects.get_or_create(user=request.user, post=post)
form = CommentForm(request.POST or None)
if request.method == 'POST':
if form.is_valid():
form.instance.user = request.user
form.instance.post = post
form.save()
return redirect(reverse('post-detail', kwargs={
'id':post.id
}))
context = {
'form': form,
'post': post,
'category_count':get_category_count,
'most_recent': most_recent,
}
return render(request, 'post.html', context)
解决方案
推荐阅读
- python - 如何根据条件从不同的列中创建一个组?
- r - 如何绘制带有子组的条形图
- swift - Swift:使用 WKWebView 的 createPdf 创建 pdf
- php - 使用 PHP 数组准备表列
- angular - 按钮上的 routerLink 没有将我路由到该页面
- r - 多列的双向交叉表
- r - R:将多个特定变量转换为因子
- flutter - 连接到 Firebase 时 Flutter 中的地图出现问题
- mysql - 如何将数据插入到连接到跟踪两个表的“中间表”的表中?
- apache-spark - 从 Spark Structured Streaming 中的 Kafka 消息中读取换行分隔的 json