我正在学习使用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”实例。
答案 0 :(得分:0)
该错误表明它期望一个Post对象。试试这个
form.instance.post_id = Post.objects.get(pk=self.kwargs['post_id'])