2012-05-23 137 views
0

我已經嘗試了很多東西,但我仍然不知道如何在Django中填充select field。以下示例添加了一個字典,其中包含一個具有name='tags'屬性的選擇字段。用Django中的多個值選擇字段預填充表單

data = {} 
for tag in tags: 
    data['tags'] = tag.name 
form = Form(initial=data) 

由於預期,環路覆蓋鍵「標籤」,所以只普遍存在的最後一個值(事實上,該表單顯示的最後一個值)。我預計可能通過一個清單將工作:

data = {} 
l = [] 
for tag in tags: 
    l.append(tag.name) 
data['tags'] = l 
form = Form(initial=data) 

但在這種情況下,它只是不起作用。

正如你可以想像,我使用的是類似這樣的形式:

class NewTopicForm(forms.Form): 
    ... some fields 
    tags = ChoiceField(
      widget=forms.Select(), 
      choices=SOME_CHOICES 
     ) 

什麼來填充形式與選擇字段,當我需要添加幾個值的正確方法?

謝謝!

UPDATE:

我試着按照這個post如下:

data = {'tags': tags.values_list('name',flat=True) } 

不幸的是,這是行不通的。我錯過了什麼嗎?

回答

1

如果你想讓初始值成爲一個列表,你似乎想要MultipleChoiceField

+1

美麗。我不得不將它改爲tags = forms.MultipleChoiceField( widget = forms.SelectMultiple(attrs = {//一些屬性}),選項= TAGS_CHOICES),但是這個工作很完美。非常感謝!。 –