像Q&A这样的应用程序中的ValueError,用于将问题的答案链接起来

时间:2019-07-02 03:26:43

标签: python django django-models django-forms

我正在学习使用Django构建一个问答应用程序。我为帖子,评论和用户设置了模型。我无法成功将帖子的id链接到评论。

我尝试通过未成功覆盖Django上的ModelForm将评论链接到帖子。

这是在我的views.py文件中:

    class CommentCreateView(LoginRequiredMixin, CreateView):
    model = Comment
    fields = ['comment']


    def form_valid(self, form):
        form.instance.author = self.request.user
        form.instance.post_id = self.kwargs['post_id']
        return super(CommentCreateView, self).form_valid(form)

我的models.py具有注释的模型如下:

    class Comment(models.Model):
    cid = models.AutoField(primary_key=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    post_id = models.ForeignKey(Post, on_delete=models.CASCADE)
    comment = models.TextField()
    comment_date = models.DateTimeField(default=timezone.now)

    def save(self, *args, **kwargs):
        super(Comment, self).save(*args, **kwargs)

    def __str__(self):
        return self.comment


    def get_absolute_url(self):
        return reverse('blog-home')

我的网址路径如下:

path('comment/<int:post_id>', PostCommentListView.as_view(), name='user-comments')

我希望评论通过ForeignKey与帖子链接。但是当我尝试执行相同操作时,出现如下错误:

  在/ post / 11 / comment /处出现

ValueError   无法分配“ 11”:“ Comment.post_id”必须是“ Post”实例。

     

异常值:
  无法分配“ 11”:“ Comment.post_id”必须是“ Post”实例。

1 个答案:

答案 0 :(得分:0)

该错误表明它期望一个Post对象。试试这个

form.instance.post_id = Post.objects.get(pk=self.kwargs['post_id'])