【发布时间】:2018-05-23 11:32:17
【问题描述】:
我有这个 ModelForm:
class Event(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(Event, self).__init__(*args, **kwargs)
##Here make some changes such as:
self.helper = FormHelper()
self.helper.form_method = 'POST'
##Many settings here which **i don't want to rewrite in 10 child classes**
class Meta:
model = Event
exclude = something...
widgets = some settings here also.
还有这个子 ModelForm:
class UpgradedEvent(Event):
def __init__(self, *args, **kwargs):
super(UpgradedEvent,self).__init__(*args,**kwargs)
class Meta(Event.Meta):
model = UpgradedEvent
UpgradedEvent 是Event model 的子级,但有一些额外的字段。
如何将Event FORM 中的所有设置继承到UpgradedEvent FORM 中?
运行上述代码时,它会呈现Event 表单。有没有办法只继承__init__ 中的设置?
编辑
查看答案,效果很好,但请记住:
您需要在您的子类中创建另一个 FormHelper 实例,否则它将不起作用。所以子类应该是这样的:
class UpgradedEvent(Event):
def __init__(self, *args, **kwargs):
super(UpgradedEvent,self).__init__(*args,**kwargs)
self.helper = FormHelper()
class Meta(Event.Meta):
model = UpgradedEvent
【问题讨论】:
标签: python django inheritance django-forms