2017-02-26 47 views
0

我写了下面的表格视图上禁用错误:坐落在表单集auto_id和不首先显示

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
  • 的形式总是难免等等形式是无效的。我忘了在超级形式调用asterik(super().__init__(*args, **kwargs)
  • 后验证上述方案还努力
  • 一个formset还曾在auto_id财产和use_required_attribute默认禁用:

    question_form.auto_id = False 
    choice_form_set.auto_id = False 
    question_form.use_required_attribute = False