这应该是特定于Django的,但我猜它是Python的。
基本上,我不想在我继承的类中覆盖原始方法的工作(可能是Model类),但我想添加其他验证。 这可能吗?任何提示?
class MyUserAdminForm(forms.ModelForm):
class Meta:
model = User
def clean(self):
// do some additional work even though it's cleaned by parent's clean method
答案 0 :(得分:5)
调用super类清除方法:
def clean(self):
super(MyUserAdminForm, self).clean()
# more cleaning
这是一个常见的python事情,当你继承某些东西并重新定义functionaly但要确保你保留超类功能。当你执行init方法时非常常见,因为你总是需要确保调用超类构造函数来设置实例。
答案 1 :(得分:0)
class ContactForm(forms.Form):
message = forms.CharField()
def clean_message(self):
num_words = len(message.split())
if num_words<4:
raise forms.ValidationError("Too short a message!")
return message
这是在字段上添加验证方法的方法,这确实可以确保进行默认清理。无需再次调用默认清理方法。
资料来源:www.djangobook.com
工作原理:
当在表单对象上调用is_valid()时,系统会查找类中以clean_开头并以属性名称结尾的任何方法。如果他们这样做,它会在运行默认清理方法后运行。