2017-06-21 61 views
0

我的模型如下所示。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对应的类别?

回答

2

你可以定义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) 
+0

你可以看看[这里](http://ccbv.co.uk/projects/Django/1.11/django.views.generic.edit/CreateView/),看看有什么方法和属性可用于您。 – Melvyn

+0

谢谢......这就像一个魅力! – art06

+0

如果它对你有帮助,请记住接受答案,作为未来读者的指南。 –

相关问题