2014-10-30 3 views
0

I가 다음 코드장고 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) 

하지만 난 우리가 ModelForm에 MultiplechoiceField로 언급 한 경우에도 유효성 검사 오류 위 보여주는데 왜

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. 

아래로 유효성 검사 오류를 얻고 제출하려고 할 때?

답변

0

choices을 모델 필드에 지정하면 안됩니다. 유효성 검사에 실패한 부분입니다.

양식이 잘 작동하고 객관식 필드의 결과는 물론 선택한 선택 목록입니다. 그런데 모델 필드에 choices의 단일 값이 필요합니다.

선택한 선택 목록을 CharField에 저장하려면 먼저 json.dumps

을 통해 문자열로 변환해야합니다.