【问题标题】:Excluding django form fields when condition met条件满足时排除 django 表单字段
【发布时间】:2015-11-14 17:27:02
【问题描述】:

当满足某些条件时,我试图从 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 字段。

我在哪里犯错了?

【问题讨论】:

    标签: python django django-forms


    【解决方案1】:
    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']
    

    【讨论】:

    • 已经试过了,它返回:'ExamCreateForm' object has no attribute 'fields'
    • 我已经尝试了所有可能的东西,我可以在 SO 上找到,它仍然会抛出错误。 'ExamCreateForm' 对象没有属性 'fields'
    • 正如我所说,我尝试了所有可能的黑客攻击,但仍然无法正常工作。 __init__ 函数很可能有问题。
    猜你喜欢
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多