我有这个模型:
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.
这个子模型:
^{pr2}$UpgradedEvent
是Event
模型的子级,但是有一些额外的字段。
如何将Event
窗体中的所有设置继承到UpgradedEvent
窗体中?在
当运行上述代码时,它呈现Event
表单。有没有办法只继承__init__
中的设置?在
EDIT
看看答案,它很有用,但请记住:
您需要在子类中创建FormHelper
的另一个实例,否则它将无法工作。所以儿童班应该看起来像:
class UpgradedEvent(Event):
def __init__(self, *args, **kwargs):
super(UpgradedEvent,self).__init__(*args,**kwargs)
self.helper = FormHelper()
class Meta(Event.Meta):
model = UpgradedEvent
创建
FormWithSettings
,它将保存窗体类的公共设置并继承它您可以获得上面的
Meta
字段,并扩展列表等:因此,通过使用继承,我们可以通过在
super(UpgradedEventForm, self)
调用之后执行一些额外的操作,向__init__
函数添加额外的过程,wwe可以访问父级的属性,并扩展这些属性。在注意,最好用
Form
后缀命名表单,因为现在模型与表单冲突。因此,您的Form
似乎有一个对Form
本身的引用作为模型。通过使用正确的“命名法”,可以避免很多错误。在相关问题 更多 >
编程相关推荐