2014-09-25 46 views
0

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

我想在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() 

在这条路上,我总是得到这个错误

'超级' 对象具有 '保存'

我觉得无属性forms.Form需要一个save()方法,但我不知道,如何做到这一点。 在文档中,我没有看到这样的例子。

感谢您的帮助。

+0

首先,请不要问问题和为是一个新手道歉。这没有错。在'contact = self.create_club_contact()'这一行中,您可以在'save()'中调用一个方法。就是这样,实际上你的问题在哪里?你不应该''user.save()'两次,最后一次。并请更正此问题:'name = data ['name']'到'name = data ['name']' – cezar 2014-09-25 15:19:12

回答

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()