0

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機能があります。

4

2 に答える 2

5

Python 2 では、次のように super を使用する必要があります。

super(addNewFamilyMemberForm, self).clean_password()

おそらく何らかの方法で戻り値を使用する必要がありますが、方法がわかりません。

また、クラス名は大文字で始める必要がありますが、それは動作には影響しません。

于 2012-06-03T01:53:38.233 に答える
1

super は実際にはオブジェクトではなく、「super.method」は実行できません。たぶん、その行を次のように変更する必要があります

super(addNewFamilyMemberForm, self).clean_password()
于 2012-06-03T01:54:32.983 に答える