Py学习  »  Django

如何在django的detailview中使用另一个模型的表单?

Paul Miranda • 6 年前 • 499 次点击  

我正在和django一起工作,我想做的是有一个帖子的详细视图,在这个详细视图中,我想要一个评论部分和一个帖子评论表单。当我加载详细视图时,它不会显示我使用基于类的视图作为表单详细信息的注释表单。 my 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>
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46999
文章 [ 1 ]  |  最新文章 6 年前
andreihondrari
Reply   •   1 楼
andreihondrari    6 年前

那是因为 DetailView 无法处理 form_class 是的。这里有几个选择:

  • 通过提供表格 get_context_data
  • 应用 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