满足条件时排除 Django 表单字段
Excluding django form fields when condition met
我试图在满足某些条件时从 Django 表单中排除表单字段。即使我提供了有效条件,表单也会在不排除字段的情况下呈现。
这是我正在做的事情:
#views.py
def create_exam(request):
cc = is_cc(request.user)
form = ExamCreateForm(cc)
return render(request, 'exam/exam_create.html', {'form': form})
#forms.py
class ExamCreateForm(forms.ModelForm):
def __init__(self, cc, *args, **kwargs):
if cc:
self.Meta.exclude.append('section')
super(ExamCreateForm, self).__init__(*args, **kwargs)
class Meta(object):
model = Exam
exclude = []
即使 cc
为 True
,表单仍会呈现 section
字段。
我哪里出错了?
class ExamCreateForm(forms.ModelForm):
class Meta:
model = Exam
fields = '__all__'
def __init__(self, cc, *args, **kwargs):
super(ExamCreateForm, self).__init__(*args, **kwargs)
if cc:
del self.fields['section']
我试图在满足某些条件时从 Django 表单中排除表单字段。即使我提供了有效条件,表单也会在不排除字段的情况下呈现。
这是我正在做的事情:
#views.py
def create_exam(request):
cc = is_cc(request.user)
form = ExamCreateForm(cc)
return render(request, 'exam/exam_create.html', {'form': form})
#forms.py
class ExamCreateForm(forms.ModelForm):
def __init__(self, cc, *args, **kwargs):
if cc:
self.Meta.exclude.append('section')
super(ExamCreateForm, self).__init__(*args, **kwargs)
class Meta(object):
model = Exam
exclude = []
即使 cc
为 True
,表单仍会呈现 section
字段。
我哪里出错了?
class ExamCreateForm(forms.ModelForm):
class Meta:
model = Exam
fields = '__all__'
def __init__(self, cc, *args, **kwargs):
super(ExamCreateForm, self).__init__(*args, **kwargs)
if cc:
del self.fields['section']