2013-04-11 50 views
1

我想在Django中保存MultipleChoiceField。 model.py在django中保存MultipleChoiceField

choices_for_field = 
    (('A','A'), 
    ('B','B'), 
    ('C','C'), 
    ('D','D'),) 

class names(models.Model): 
    c_name = models.CharField(max_length=50, null=False, blank=False, choices=choices_for_field) 

class formForm(ModelForm):  
    c_name = forms.MultipleChoiceField(label='alphabets', choices=choices_for_field, widget=CheckboxSelectMultiple) 

當我保存此,我得到一個錯誤「不是一個有效的選擇。」我不知道我哪裏錯了。我檢查了與此相關的所有其他問題。但沒有任何工作對我來說。有誰能夠幫助我。

views.py

bf = formForm(request.POST) 
    if bf.is_valid(): 
     temp = bf.save(commit=False) 
     temp.stud_user_id = userid 
     temp.save() 
+0

錯誤沒有變化。 – escapee 2013-04-11 15:14:32

+0

我可以看到你查看代碼 – catherine 2013-04-11 16:13:58

+0

我已添加查看代碼 – escapee 2013-04-12 09:13:17

回答

3

您可以將多選場不保存到CharField。 CharField是一個單獨的元素。一個MulitpleChoiceField是多重的。

我懷疑你想要做的是在CharField中將一系列選項連接成一個逗號分隔的值。你可以用一個標準的forms.TextField(使用一個MultipleChoiceWidget)和一個自定義的乾淨方法來完成連接,但是你需要從目標CharField中刪除選項屬性。

+0

的保存部分我會試試看。謝謝。 – escapee 2013-04-11 15:40:08

+0

謝謝丹尼爾。表格現在得到保存。只是因爲我已經將CharField更改爲TextField。當選擇A和C時,它將數據庫中的c_name保存爲[u'A',u'C']。如何擺脫[u]字符。再次感謝。 – escapee 2013-04-12 07:30:49

+0

你只是保存列表本身的字符串表示。您應該在'clean_c_name'方法中明確地轉換爲連接字符串:'','。join(self.cleaned_data ['c_name'])''。 – 2013-04-12 07:58:11

相關問題