我创建了一个模型评论,它很容易显示评论在后的底部,但我应该如何使一个表单添加评论在同一页作为art_detail
.我的意思是我必须使用CreateView
,但ArtDetailView()
使用DetailView
,所以我不能把两个在一个视图,当我把他们我分开的视图只有一个视图发送数据到模板模型:
class Comment(models.Model):
writer = models.ForeignKey(get_user_model(),on_delete=models.CASCADE)
art = models.ForeignKey(Art,on_delete=models.CASCADE)
text = models.TextField(max_length=500)
date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.writer.username
视图:
class CommentView(CreateView):
model = Comment
template_name = 'art_detail.html'
fields = ['text']
def form_valid(self, form):
form.instance.art = Art.objects.get(id=self.id)
form.instance.writer = self.request.user
return super().form_valid(form)
class ArtDetailView(DetailView):
model = Art
template_name = 'art_detail.html'
处理这个评论idk即使我需要一个url
或没有?你能请帮助这个问题吗
2条答案
按热度按时间7xllpg7q1#
您可以创建一个表单,并通过混合这两种视图来使用它,如下所示:
bkhjykvo2#
CBV和FBV可以达到相同的效果,但是在FBV中查看它们比在CBV中查看它们更能帮助您理解视图。下面是如何在FBV中应用此功能的示例:
views.py
models.py
forms.py
post_page. html(包含帖子和相关评论的页面)
urls.py
When linking to the post, make sure to add post.pk in href
希望这能帮上忙