django - CreateView - 如何显示在下拉列表中选择的特定选项
问题描述:
我的模型如下所示。django - CreateView - 如何显示在下拉列表中选择的特定选项
class ProductGroup(models.Model):
name = models.CharField(max_length=30,null=False, blank=False)
category=TreeForeignKey('category.Category', null=False,blank=False)
我有一个CreateView的作为
class CreateProductGroup(CreateView):
model = ProductGroup
fields = ['name', 'category']
这种观点我的URL模式是
url(r'^create-group/(?P<pk>[0-9]+)/$', views.CreateProductGroup.as_view(), name='create_group'),
我传递的CATEGORY_ID通过URL从category_detail.html页面
<a href="{%url 'create_group' object.id %}">Create product group</a>
她e's my form
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}
{% buttons %}
<button type="submit" class="btn btn-primary">
Submit
</button>
{% endbuttons %}
</form>
现在,我该如何在URL中显示与在表单中选择的id对应的类别?
答
你可以定义get_initial()
方法返回一个字典来预先填充表单;在该方法中,您可以从self.kwargs
获取值。
def get_initial(self):
return {'category': self.kwargs['pk']}
或者,如果类别ID总是在URL中提供,您可能不希望类别字段显示在表单上;在这种情况下,将其从字段列表中排除,并覆盖form_valid
方法以在保存时将其设置。
def form_valid(self, form):
form.instance.category_id = self.kwargs['pk']
return super(CreateProductGroup, self).form_valid(form)
你可以看看[这里](http://ccbv.co.uk/projects/Django/1.11/django.views.generic.edit/CreateView/),看看有什么方法和属性可用于您。 – Melvyn
谢谢......这就像一个魅力! – art06
如果它对你有帮助,请记住接受答案,作为未来读者的指南。 –