我正在使用django,但这是一个普通的python问题。
我已经定义了一个我打算用来扩展ModelForm和Form类的类,来自django.forms。
代码如下所示:
class FormMixin(object):
def __init__(self, *args, **kwargs):
""" every method ocurrence must call super """
super(FormMixin, self).__init__(*args, **kwargs)
self.new_attr = 'This is an attribute'
class ModelFormAdapter(forms.ModelForm):
""" I use this class so __init__ signatures match """
def __init__(self, *args, **kwargs):
""" every method ocurrence must call super """
super(ModelFormAdapter, self).__init__(*args, **kwargs)
class BaseModelForm(ModelFormAdapter, FormMixin):
def __init__(self, *args, **kwargs):
""" BaseModelForm never gets the attribute new_attr """
super(BaseModelForm, self).__init__(*args, **kwargs)
我甚至调试了这个,并且从不调用FormMixin init 方法。我究竟做错了什么?我想要实现的是向表单添加一些属性并预处理字段标签和css类
答案 0 :(得分:2)
那是因为ModelFormAdapter
的一个祖先(BaseForm
),没有调用super
,而且链断裂了。将FormMixin
放在父列表中。