如何“自动填充”CreateView字段

时间:2017-10-05 13:06:49

标签: python django

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

我已经构建了一个名为ArtistComment的模型,创建了一个CreateView并使用模态div将其添加到DetailView中,因此它看起来更好。唯一的问题是,当您点击“添加评论”时,模式会同时显示“艺术家”和“评论”字段。艺术家字段是一个下拉菜单,用于选择应用评论的艺术家。我希望能够隐藏“艺术家”字段,并根据您从“添加评论”链接的页面进行自动完成。

我设法通过'self.request.user'让'User'字段自动完成,但每当我尝试self.request.artist_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)

urls.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>

1 个答案:

答案 0 :(得分:1)

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

要让ArtistCommentCreate次观看中的艺术家重写网址,如下所示:

  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')