2011-05-31 92 views
1

我有這個如何創建多選選項?或將屬性添加到models.CharField

models.CharField(max_length=10,choices=LOCATION_NAME) 

不過,我希望它呈現這樣的事情,

<select multiple="multiple"> 
<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
<option value="4">4</option> 
</select> 

我想它添加到Django管理部分。

回答

2
+0

這是否適用於模型? – James 2011-05-31 19:52:01

+0

是的。如果您引用了其他模型,則將使用ModelMultipleChoiceField(如管理中的多對多)。否則,您需要指定如何將您的MultipleChoiceField的結果序列化到CharField中。 – 2011-05-31 19:57:54

+0

以您的示例爲例,您可能希望在模型中使用CommaSeparatedIntegerField。 – 2011-05-31 19:59:17

2

讓你的模型的ModelForm和手動設置你想要的字段顯示的小部件爲:

models.py

class Book(models.Model): 
    publisher = models.CharField(max_length=100) 

forms.py

class BookForm(forms.ModelForm): 
    publisher = forms.MultipleChoiceField(widget=forms.SelectMultiple) 

    class Meta: 
     model = Book 

這意味着用於顯示該字段是一個選擇的HTML,表格生成的數據作爲發佈者的列表,並將您的有效選擇簡單地保存爲數據庫中的字符字段。您實際上並不需要指定widget = forms.SelectMultiple,但很高興看到發生了什麼(並且在討論數據庫/表單/小部件時,我總是會混淆不同的字段)

+0

我不得不將上面的'forms.MultipleChoiceField'更改爲'forms.CharField'以顯示選項,然後它就起作用了。 – radtek 2015-05-25 15:07:13

相關問題