2014-02-27 100 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

相关问题