我正在尝试保存电子邮件并在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 :(得分:1)
您无法将多项选择字段保存到CharField。 CharField是一个单独的元素。 MulitpleChoiceField是多重的。另外,您要设置选项字段max_length=1
,这样也无法正常工作。
我怀疑你想要做的是将一系列选择连接到CharField中的单个(逗号分隔?)值。您可以使用标准forms.TextField
(使用MultipleChoiceWidget)和一个执行连接的自定义清理方法来执行此操作,但您需要从目标CharField中删除choices属性。
例如:
def clean_option_field(self):
return ','.join(self.cleaned_data['option'])