2017-10-05 122 views
0

我有一个名为Artist的模型,现在我正在为Artist DetailView创建注释部分。如何自动填充CreateView字段

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

我设法让'User'字段自动填充'self.request.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

要隐藏艺术家场从场中删除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')

+0

感谢帮助,我想我快到了!我只是在评论视图中存在一些问题,我是否会像这样将'self.kwargs.get('artist')'添加到form_valid中; 'from.instance.artist = self.kwargs.get('artist')' –

+0

@J_Clique你必须用'commit = False'保存表单,然后在obj返回的将是'ArtistComment'的一个实例,然后你可以将艺术家的价值设置为:'comment.artist = self.kwargs.get('artist')',然后保存评论实例。 –

+0

@J_Clique如果你发现这个答案有帮助,并且接受它。 –