1

我有一个“通用” InternForm,它继承ModelForm并定义了常见的消息、小部件等。

ApplyInternForm我为每个人都可以访问的申请表定义了一个子类,我想隐藏一些“高级”字段。

如何覆盖exclude表单子类中的设置?

class InternForm(ModelForm):

    # ...

    class Meta:
        model = Intern
        exclude = ()

class ApplyInternForm(InternForm):
    def __init__(self, *args, **kwargs):
        super(ApplyInternForm, self).__init__(*args, **kwargs)
        self.Meta.exclude = ('is_active',)  # this doesn't work
4

3 回答 3

3

Meta在子类中定义一个类对我有用:

class InternForm(ModelForm):

    # ...

    class Meta:
        model = Intern

class ApplyInternForm(InternForm):

    class Meta:
        model = Intern
        exclude = ('is_active',)
于 2011-09-27T12:00:30.797 回答
1

不是这样,不是。当您对表单进行子类化时,您要排除的字段已经存在。但是,您可以self.fields在调用.super()__init__()

于 2011-09-27T11:55:37.207 回答
-1

您可以将小部件更改为隐藏:

class ApplyInternForm(InternForm):
    class Meta:
        widgets = {
            'is_active': forms.HiddenInput(required=False),
        }
于 2011-09-27T13:56:14.373 回答