gpt4 book ai didi

python - 在表单集中设置 auto_id 并且不要在首次显示时禁用错误

转载 作者:太空宇宙 更新时间:2023-11-03 15:36:48 28 4
gpt4 key购买 nike

我正在编写以下表单的 View :

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})
  • 首次显示 View 时也会显示字段必填错误消息

  • 表单要求填写所有选项,但只能是一个:validate_min=1

  • auto_iduse_required_attribute如何设置更优雅?

最佳答案

  • 该表单始终处于绑定(bind)状态,因此该表单无效。我忘记了 super call (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

关于python - 在表单集中设置 auto_id 并且不要在首次显示时禁用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42466190/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com