使用选项覆盖父级的表单字段?

时间:2012-01-14 05:46:48

标签: python inheritance

我有一个Django表格的基类。然后子类从父级继承,包括所有字段,但我需要更改父级的一个字段选项,例如labelrequired等。

示例:

class BaseForm(forms.Form):
    userid = forms.CharField(required=True)

class ChildForm(BaseForm):
    # I need to change the parent field option 
    userid = forms.CharField(required=False)

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

你正在做你应该做的事情。

在这种情况下特别适合,因为这是覆盖ModelForm字段的确切模式。

如果您需要保留您不了解/不在控制之外的属性(或者您拥有的属性),则可以覆盖__init__方法并通过self.fields['myfield']

class ChildForm(BaseForm):
    def __init__(self, *args, **kwargs):
        super(ChildForm, self).__init__(*args, **kwargs)
        self.fields['userid'].required = False