2012-01-14 26 views
1

我有一個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) 

任何建議?

回答

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 
+0

感謝訪問表單字段!我在構造函數中重寫,因爲我不想保留在父類中設置的默認值。 – noobzie 2012-01-14 21:27:48