2017-06-21 87 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

如果它對你有幫助,請記住接受答案,作爲未來讀者的指南。 –

相關問題