在forms.Form中创建方法

时间:2014-09-25 14:33:26

标签: django forms view save

我的问题是,我可以在表单中创建方法吗?

我想在UserChangeForm中创建一个方法,它应该控制一些东西。 如果在提交时save()如何调用此方法? 在forms.form我还必须创建一个save()吗?

我试过了:

class UserChangeForm(forms.Form):
    #fields for the form

    def create_club_contact(self):
        user = super(UserChangeForm, self).save(commit=False)

        if information is None:
           #create clubcontact 
        else:
           #update clubcontact 
        return clubcontact

    def clean_password2(self):
        #check password
        return password2

    def save(self):
        data = self.cleaned_data
        user = TennisClub(link=data['link'], name=data['name'])
        user.save()
        contact = self.create_club_contact()
        user.club_contact = contact
        user.save()

通过这种方式我总是得到这个错误

  

'super'对象没有属性'save'

我认为forms.Form需要一个save()方法,但我不知道,该怎么做才对。 在文档中,我没有看到这样的例子。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

class MyForm(forms.Form):
    def __init__(self):
        self.member = False

    # example of a method with return statement
    def my_method(self):
        return something

    # example for a void method, no return value
    def another_method(self):
        self.member = True

    def save(self):
        my_variable = self.my_method()
        self.another_method()
        # continue with your logic

编辑:

我认为你没有创建方法和调用它们的问题。以上可能对你很清楚。但似乎你有另一个问题,但你不能对它提出质疑。

您的表单继承自Form。父类Form有一个方法save(),您想要覆盖它。

将其放在方法save()的末尾,然后重试:

return super(UserChangeForm, self).save()