2017-02-26 4 views
0

私は次の形式のためのビュー書いています上のエラーを無効にしない:フィールドに必要なエラーメッセージも表示がセットフォームセットにauto_id第1の表示

に表示される最初の時間を示している

class QuestionForm(forms.ModelForm): 
    class Meta: 
     model = Question 
     fields = ('question_text',) 

    def __init__(self, *args, **kwargs): 
     super().__init__(args, kwargs) 
     self.fields['question_text'].label = 'Question' 


class ChoiceForm(forms.ModelForm): 
    class Meta: 
     model = Choice 
     fields = ('choice_text',) 

    def __init__(self, *args, **kwargs): 
     super().__init__(args, kwargs) 
     self.fields['choice_text'].label = 'Choice' 


ChoiceFormSet = inlineformset_factory(Question, Choice, form=ChoiceForm, 
             extra=6, validate_min=1, can_delete=False) 

def create_question(request): 
    if request.method == "POST": 
     question_form = QuestionForm(request.POST) 
     choice_formset = ChoiceFormSet(request.POST) 
     if question_form.is_valid() and choice_formset.is_valid(): 
      question = question_form.save() 
      choice_formset.instance = question 
      choice_formset.save() 
      return HttpResponseRedirect(reverse('polls:vote', args=(question.id,))) 
    else: 
     question_form = QuestionForm() 
     choice_formset = ChoiceFormSet() 

    question_form.auto_id = False 
    question_form.use_required_attribute = False 

    for form in choice_formset: 
     form.auto_id = False 
     form.use_required_attribute = False 

    return render(request, 'polls/create.html', {'question_form': question_form, 'choice_formset': choice_formset}) 
  • フォームは、すべての選択肢を記入が必要ですが、それは唯一のものでなければならない:validate_min=1

  • どのようauto_iduse_required_attributeはよりエレガントに設定されていますか?

答えて

0
  • フォームは常にバウンドだったので、フォームが無効でした。検証上記の溶液はまた、
  • を働いた後、私は、フォームスーパーコール(super().__init__(*args, **kwargs)

  • にアスタリスクを忘れてしまったフォームセットは、デフォルトでは無効になっauto_id財産とuse_required_attributeを持っています

    question_form.auto_id = False 
    choice_form_set.auto_id = False 
    question_form.use_required_attribute = False 
    
関連する問題