Python 如何“自动填充”CreateView字段
我有一个名为Artist的模型,现在我正在为Artister DetailView构建一个评论部分 我构建了一个名为ArtistComment的模型,创建了一个CreateView,并使用modal div将其添加到DetailView中,这样看起来就更好了。唯一的问题是,当您单击“添加注释”时,模式会显示“艺术家”和“注释”字段。“艺术家”字段是一个下拉菜单,用于选择将注释应用于哪个艺术家。我想能够隐藏'艺术家'字段,并有这个自动完成的基础上,您按照页面上的'添加评论'链接 我已经设法让“用户”字段用“self.request.User”自动完成,但每当我尝试self.request.artist\u id之类的操作时,我的模式表单就会显示为空白。有人能帮我指出解决这个问题的正确方向吗 views.py:Python 如何“自动填充”CreateView字段,python,django,Python,Django,我有一个名为Artist的模型,现在我正在为Artister DetailView构建一个评论部分 我构建了一个名为ArtistComment的模型,创建了一个CreateView,并使用modal div将其添加到DetailView中,这样看起来就更好了。唯一的问题是,当您单击“添加注释”时,模式会显示“艺术家”和“注释”字段。“艺术家”字段是一个下拉菜单,用于选择将注释应用于哪个艺术家。我想能够隐藏'艺术家'字段,并有这个自动完成的基础上,您按照页面上的'添加评论'链接 我已经设法让“用户
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如果您觉得这个答案有帮助,请投票并接受它。