我是一个在Django中继承另一个表单的表单:
class RegistrationForm(forms.Form):
...
def clean_password(self):
if not re.search('[a-zA-Z]', self.data['password']):
raise forms.ValidationError('Must contain a letter.')
return self.data['password']
class addNewFamilyMemberForm(RegistrationForm):
...
def clean_password(self):
if self.data["username"]:
super.clean_password(self)
return self.data["password"]
为什么Django会产生这个错误?
type object 'super' has no attribute 'clean_password'
addNewMemberForm
的超类显然具有clean_password
功能。
答案 0 :(得分:5)
在Python 2中,你需要像这样使用super:
super(addNewFamilyMemberForm, self).clean_password()
你应该以某种方式使用返回值,但我不确定如何。
此外,类名应以大写字母开头,但这不会影响它的工作方式。
答案 1 :(得分:1)
super实际上不是一个对象,你不能做“super.method”。也许您应该将该行更改为
super(addNewFamilyMemberForm, self).clean_password()