2017-01-09 5 views
0

models.pyошибка проверки CheckboxSelectMultiple при отправке формы на Django

class MyModel(models.Model): 
     OPTION_CHOICES = (('a','a'),('b','b')) 
     option = models.CharField(max_length=1, choices=OPTION_CHOICES) 

forms.py

class MyForm(ModelForm): 
     class Meta: 
      model=MyModel 
      fields=['option'] 
      widgets = {'option':CheckboxSelectMultiple(),} 

Когда я пытаюсь отправить форму, у меня есть ошибка проверки и не может представить его , Когда я получаю CheckboxSelectMultiple до RadioSelect, он работает отлично. Так как я могу это исправить, используя checkboxSelectMultiple

+0

Что говорит об ошибке? Как вы думаете, что сохранить в полях опций, когда вы выбираете «a» и «b»? Ваше поле должно принимать более одного варианта. Вы можете изменить имя поля с опцией на opntion * s * и сделать его полем от многих до многих, чтобы он мог связывать (отношения) с несколькими объектами. – allcaps

+0

ИЛИ сделать что-то побитовое https://github.com/disqus/django-bitfield – allcaps

+0

@allcaps error says ** Выберите правильный выбор. [u'a '] не является одним из доступных вариантов. ** –

ответ

0
option = models.CharField(max_length=1, choices=OPTION_CHOICES) 

Только принимает только один символ. Отправляя форму с множественным выбором виджетом вы пытаетесь сохранить список:

[u'a'] 

Это, конечно, приведет к ошибке:

Select a valid choice. [u'a'] is not one of the available choices. 

снова: 'a' или 'b' являются строки и действительные выборы, [u'a'] список a недействителен.

Чтобы сохранить списки (или несколько отношений), вы должны выбрать другой тип поля. Какой тип поля точно зависит от ваших требований к проекту. Недостаточно информации, чтобы дать вам советы, что использовать.

Смежные вопросы