2015-10-15 58 views
2

请有人帮我解决我的代码中的这个错误。此错误或不断显示:integrityError,UNIQUE约束失败:blog_post.author_id

这是我在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}) 
+1

你能发布完整的错误吗? – Programmer

+0

您可能已经在您的Post模型中使用该用户再次添加了该用户。 因此,看看邮政表条目,以确保你不重复! –

+1

您可能需要一个ForeignKey而不是OneToOne。由于作者可以有多个帖子。 – karthikr

回答

2

您目前有作家一对一的现场。这意味着每个帖子都有一个作者,每个作者最多只能有一个帖子。当您尝试添加具有相同作者的第二篇文章时,您会收到错误消息。

而应该使用外键。这意味着每个帖子都有一个作者,但是多个帖子可以链接到同一个作者。

class Post(models.Model): 
    author=models.ForeignKey(User) 

一旦你做出这个改变,你将不得不创建一个新的迁移和迁移,以删除唯一的约束。

相关问题