在 forms.Form 中创建方法
Posted
技术标签:
【中文标题】在 forms.Form 中创建方法【英文标题】:Create method in forms.Form 【发布时间】:2014-09-25 14:33:26 【问题描述】:我的问题是,我可以在表单中创建方法吗?
我想在 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() 方法,但我不知道如何正确执行。 在文档中,我没有看到这样的例子。
感谢您的帮助。
【问题讨论】:
首先,不要为提出问题和作为新手而道歉。没有什么不对的。在contact = self.create_club_contact()
行中,您调用save()
中的一个方法。就是这样,你的问题到底出在哪里?你不应该让user.save()
两次,最后只做一次。请更正此问题:name =data['name']
至 name=data['name']
【参考方案1】:
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()
【讨论】:
以上是关于在 forms.Form 中创建方法的主要内容,如果未能解决你的问题,请参考以下文章