请有人帮我修复代码中的这个错误。
这是我在 models.py 文件中的代码
class Post(models.Model):
author=models.OneToOneField(User)
topic = models.CharField(max_length=255)
article =models.TextField()
publish_date=models.DateTimeField(auto_now_add=True)
slug=models.SlugField(unique=True)
这是views.py文件中的代码
def add_post(request):
if not request.user.is_authenticated():
return redirect('/login/')
if request.method=='POST':
form= post_form(request.POST)
if form.is_valid():
post=form.save(commit=False)
post.author=request.user
post.slug=slugify(post.topic)
form.save()
slug=slugify(topic)
return redirect('blog.views.post',slug=post.slug)
else:
return render(request,'post_add.html',{'form':form})
else:
form=post_form()
template='post_add.html'
return render (request,template,{'form':form})
最佳答案
您目前有一个一对一的作者字段。这意味着每个帖子都有一位作者,并且每个作者最多可以有一篇帖子。当您尝试添加具有相同作者的第二篇帖子时,您会收到错误消息。
相反,您应该使用外键。这意味着每个帖子都有一位作者,但多个帖子可以链接到同一作者。
class Post(models.Model):
author=models.ForeignKey(User)
完成此更改后,您将必须创建新的迁移并进行迁移,以删除唯一约束。
关于python - 此错误或一直显示 : integrityError, UNIQUE 约束失败 : blog_post.author_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33159227/