2014-02-27 143 views
2

我試圖保存電子郵件並在mydatabase中選擇多個選擇。使用電子郵件,一切工作正常,但選擇('選項')有一些問題。它不會保存在我的數據庫中。這是我的代碼:多項選擇選擇不會保存在數據庫中

views.py

if form.is_valid(): 
      email = form.cleaned_data['email'] 
      option = request.POST.getlist('my_field') 
      new_user = form.save(email, option) 

models.py

class Vartotojas(models.Model): 
    email = models.EmailField() 
    CHOICES = (
     ('s', 'small'), 
     ('m', 'medium'), 
     ('b', 'big'), 
    ) 
    option = models.CharField(max_length=1, choices=CHOICES) 

forms.py

email = forms.EmailField(max_length=100) 
my_field = forms.MultipleChoiceField(choices=Vartotojas.CHOICES, widget=forms.CheckboxSelectMultiple()) 

    def save(self, email, option): 
     mymodel = Vartotojas(
     email=email, 
     option = option, 
     ) 
     mymodel.save() 

哪裏是我的錯?

+0

我會避免使用_common_名字領域,如'option'。 – Drewness

+0

但這是一個特定的問題? –

+0

我並不是說這就是導致你遇到的問題,我是說它會導致問題的發展。 – Drewness

回答

1

您不能將多選字段保存到CharField。 CharField是一個單獨的元素。一個MulitpleChoiceField是多重的。另外,您正在設置選項字段max_length=1,這樣也不起作用。

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

例如:

def clean_option_field(self): 
    return ','.join(self.cleaned_data['option']) 
+1

請注意:如果輸入包含逗號,這可能會導致問題。 – cwallenpoole

相關問題