多选选择不会在数据库中保存

时间:2014-02-27 20:03:14

标签: python django

我正在尝试保存电子邮件并在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()

我的错误在哪里?

1 个答案:

答案 0 :(得分:1)

您无法将多项选择字段保存到CharField。 CharField是一个单独的元素。 MulitpleChoiceField是多重的。另外,您要设置选项字段max_length=1,这样也无法正常工作。

我怀疑你想要做的是将一系列选择连接到CharField中的单个(逗号分隔?)值。您可以使用标准forms.TextField(使用MultipleChoiceWidget)和一个执行连接的自定义清理方法来执行此操作,但您需要从目标CharField中删除choices属性。

例如:

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