2014-10-30 58 views
0

我有以下代码Django的MultpleSelectionField使用情况和错误

models.py

fitness_choices = (('wl', 'Weight Loss'), ('ft', 'Firming and Toning'), 
        ('yo', 'Yoga'), ('ot', 'Others'),) 
periods_to_train = (('da', 'Daily'), ('ft', 'Few Times A Week'), 
        ('oa', 'Once A Week'),) 

class Fitness(models.Model): 
    fitness_goals = models.CharField(max_length=80, choices=fitness_choices) 
    training_periods = models.CharField(max_length=5, choices=periods_to_train) 

forms.py

class FitnessForm(ModelForm): 
    fitness_goals = forms.MultipleChoiceField(
      choices=fitness_choices, widget=forms.CheckboxSelectMultiple) 
    training_periods = forms.MultipleChoiceField(
      choices=DAYS_OF_WEEK, widget=forms.CheckboxSelectMultiple) 

    class Meta: 
      model = Fitness 

views.py

from apps.services.forms import FitnessForm 

def fitness(request): 
    """ Creating a Fitness RFQ """ 
    fitness_rfq_form = FitnessForm() 
    if request.method == 'POST': 
     fitness_rfq_form = FitnessForm(request.POST) 
     if fitness_rfq_form.is_valid(): 
      obj = fitness_rfq_form.save(commit=False) 
      obj.user = request.user 
      obj.save() 
      return HttpResponseRedirect(reverse('home')) 
    context = {'fitness_rfq_form': fitness_rfq_form} 
    return render(request, 'services/fitness_rfq.html', context) 

但是,当我试图提交我得到验证错误如下

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

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

那么,为什么有人表示,即使我们的ModelForm提到它作为MultiplechoiceField上述验证错误?

回答

0

您不应在模型字段中指定choices ...这是未通过验证的部分。

您的表单工作正常,多选字段的结果当然是选定选项的列表。但是你的模型领域预计从choices单个值。

如果要将所选选项的列表存储在CharField中,则需要先将它们转换为字符串,也许可以通过json.dumps

相关问题