满足条件时排除 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 = []

即使 ccTrue,表单仍会呈现 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']