我的模型如下所示。
class ProductGroup(models.Model):
name = models.CharField(max_length=30,null=False, blank=False)
category=TreeForeignKey('category.Category', null=False,blank=False)
我有一个CreateView as
class CreateProductGroup(CreateView):
model = ProductGroup
fields = ['name', 'category']
此视图的我的网址格式为
url(r'^create-group/(?P<pk>[0-9]+)/$', views.CreateProductGroup.as_view(), name='create_group'),
我从category_detail.html页面传递category_id到url
<a href="{%url 'create_group' object.id %}">Create product group</a>
这是我的表格
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}
{% buttons %}
<button type="submit" class="btn btn-primary">
Submit
</button>
{% endbuttons %}
</form>
现在,如何在表单中选择的URL中显示与id相对应的类别?
答案 0 :(得分:3)
您可以定义get_initial()
方法以返回字典以预填充表单;在该方法中,您可以从self.kwargs
获取值。
def get_initial(self):
return {'category': self.kwargs['pk']}
或者,如果URL中始终提供类别ID,您可能根本不希望类别字段显示在表单上;在这种情况下,将其从字段列表中排除,并覆盖form_valid
方法以将其设置为保存。
def form_valid(self, form):
form.instance.category_id = self.kwargs['pk']
return super(CreateProductGroup, self).form_valid(form)