[英]How to have a Form from another Model inside a DetailView in Django?
我正在使用Django,并且我想要做的是拥有一个Posts的DetailView,并且在该细节视图内我想要一个带有用于发表评论的表单的评论部分。 当我加载详细视图时,它不会显示注释的形式,我正在使用基于类的视图作为表单的详细信息。 我的models.py看起来像这样:
class Post(models.Model):
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
title = models.CharField(max_length = 200)
text = models.TextField()
created_date = models.DateTimeField(default = timezone.now)
likes = models.IntegerField(default=0)
tags = models.CharField(max_length = 50, default = '' )
def get_absolute_url(self):
return reverse('blog:post_list')
def __str__(self):
return self.title
class Comments(models.Model):
post = models.ForeignKey('blog.Post', related_name='comments', on_delete=models.CASCADE)
text = models.TextField()
created_date = models.DateTimeField(default = timezone.now)
views.py看起来像这样:
class PostDetailView(DetailView):
form_class = CommentsForm
model = Post
该表格如下所示:
class CommentsForm(forms.ModelForm):
class Meta:
model = Comments
fields = ('text',)
widgets = {
'text' : forms.Textarea(attrs={'class':'comment-textarea'})
}
而且comments_form.html看起来像这样:
<div class="container">
<div class="row">
<div class="col">
<h1>Estoy siendo insertado</h1>
<form action="" method="POST">
{%csrf_token%}
{{ form.as_p }}
<input type="submit" class="btn mt-2 btn-comments" value="Comment">
</form>
</div>
</div>
</div>
这是因为DetailView
不处理form_class
。 您可以在此处选择以下几种方式:
get_context_data
提供表格 DetailView
上应用FormMixin
。 (可以在django.view.generic.edit
下找到) 上下文数据示例:
def get_context_data(self, **kwargs):
context = super(PostDetailView, self).get_context_data(**kwargs)
context['comments_form'] = CommentsForm()
return context
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.