MultipleChoiceField 仅包含选择,而不包含 ManyToManyField

时间:2021-02-10 08:13:07

标签: django django-models django-forms

MultipleChoiceField 有问题,无法保存。

型号:

 class Companyd(models.Model):

 months_recurrence_options = (
    ("1", "Enero"),
    ("2", "Febrero"),
    ("3", "Marzo"),
    ("4", "Abril"),
    ("5", "Mayo"),
    ("6", "Junio"),
    ("7", "Julio"),
    ("8", "Julio"),
    ("9", "Septiembre"),
    ("10", "Octubre"),
    ("11", "Noviembre"),
    ("12", "Diciembre")
)


   months_recurrence=models.CharField(max_length=100,choices=months_recurrence_options, 
   blank=True,null=True)

表格:

 class CompanyFormAdmin(forms.ModelForm):

      months_recurrence = 
      forms.MultipleChoiceField(required=False,widget=forms.CheckboxSelectMultiple, 
      choices=Company.months_recurrence_options)

    class Meta:
      model = Company
      fields = [...
                 months_recurrence
                ...
               ]

观看次数

    form = CompanyFormAdmin(request.POST or None, request.FILES or None, instance=obj)

    if request.method == 'POST':

        if form.is_valid():
            form.save()

当我保存表单时,我遇到了这个问题:

{'months_recurrence': [ValidationError(["Escoja una opción válida. ['5', '7', '10'] no es una de las opciones disponibles."])]}

1 个答案:

答案 0 :(得分:1)

由于 Charfield 仅存储一个选项,而您试图在表单中存储多个选项,因此它为您提供了一个 ValidationError。您需要从 choices=months_recurrence_options 中删除 Charfield 并使用 different way 中的选项检查值的验证,或者将 Charfield 更改为 django-multiselectfield