Python 如何“自动填充”CreateView字段

Python 如何“自动填充”CreateView字段,python,django,Python,Django,我有一个名为Artist的模型,现在我正在为Artister DetailView构建一个评论部分 我构建了一个名为ArtistComment的模型,创建了一个CreateView,并使用modal div将其添加到DetailView中,这样看起来就更好了。唯一的问题是,当您单击“添加注释”时,模式会显示“艺术家”和“注释”字段。“艺术家”字段是一个下拉菜单,用于选择将注释应用于哪个艺术家。我想能够隐藏'艺术家'字段,并有这个自动完成的基础上,您按照页面上的'添加评论'链接 我已经设法让“用户

我有一个名为Artist的模型,现在我正在为Artister DetailView构建一个评论部分

我构建了一个名为ArtistComment的模型,创建了一个CreateView,并使用modal div将其添加到DetailView中,这样看起来就更好了。唯一的问题是,当您单击“添加注释”时,模式会显示“艺术家”和“注释”字段。“艺术家”字段是一个下拉菜单,用于选择将注释应用于哪个艺术家。我想能够隐藏'艺术家'字段,并有这个自动完成的基础上,您按照页面上的'添加评论'链接

我已经设法让“用户”字段用“self.request.User”自动完成,但每当我尝试self.request.artist\u id之类的操作时,我的模式表单就会显示为空白。有人能帮我指出解决这个问题的正确方向吗

views.py:

class ArtistCommentCreate(CreateView):
    model = ArtistComment
    fields = ['artist', 'message',]

    def get_success_url(self):
        return reverse('events:artistdetail', kwargs={'pk': self.object.artist_id})

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super(ArtistCommentCreate, self).form_valid(form)
URL.py:

url(r'^artist-(?P<pk>[0-9]+)/$', login_required(views.ArtistDetailView.as_view()), name='artistdetail'),
url(r'^artistcomment/add/$', login_required(views.ArtistCommentCreate.as_view()), name='artistcomment-add'),
artistdetail.html:

<a data-toggle="modal" data-target="#artistcommentModal" href="{% url 'events:artistcomment-add' %}">Add A New Comment</a>

<div id="artistcommentModal" class="modal fade" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-body"></div>
        </div>
    </div>
</div>

要隐藏艺术家字段,请从字段中删除艺术家

要获取ArtistCommentCreate视图中的艺术家,请按以下方式重写url:

  url(r'^(?P<artist>\d+)/artistcomment/add/$', login_required(views.ArtistCommentCreate.as_view()), name='artistcomment-add'),
在您的详细html中:

<a data-toggle="modal" data-target="#artistcommentModal" href="{% url 'events:artistcomment-add' artist= artist.id%}">Add A New Comment</a>

在您的评论视图中,将艺术家pk设置为self.kwargs.get'artist'

谢谢您的帮助,我想我就快到了!我只是对评论视图有一些问题,我会像这样将self.kwargs.get'artist'添加到表单中吗;from.instance.artist=self.kwargs.get'artist'@J_-Clique您必须使用commit=False保存表单,然后在obj中返回的将是ArtistComment的实例,然后您可以将艺术家值设置为:comment.artist=self.kwargs.get'artist',然后保存评论实例。@J_-Clique如果您觉得这个答案有帮助,请投票并接受它。