4(form_validation about admin)

  1. admin.py中的form有效性检查
    假设提交的表单中有email项,即attriN中有email项。我们要对输入的email做检查。
    实际上,在models.py中定义attriN时,指定了modelField,modelField会在form提交时对输入的attriN做检查,但是是粗粒度的。比如models.EmailField会判断输入是否为email,但不会检查是否是163、gmail还是其他邮箱。。
    如果要检查提交的内容的长度,对特定邮箱的判断的话就需要做validation检查了。
from django import forms
from .models import AppName
class AppNameForm(forms.ModelForm): 
        class Meta: 
            model = AppName 
            fields = ["attri1","attri2","attri3"]
 #假设存在一个email项
#当点击submit按钮是会清空掉email项中的内容,
#此时执行这个函数,把return的内容显示在email项中,如果为空,则email中啥都没有。
#检查的顺序应该是首先models.EmailField检查一遍,在运行这个clean_email检查一遍,最后在运行EmailField检查一遍
        def clean_email(self):
            email = self.cleaned_data.get('email')
            email_base, email_provider = email.split('@')
            email_domain,email_extension = email_provider.split('.')
            if not email_domain == '163'
                raise.formsValidationError("you should input 163 email")#抛出错误
            return email #实际上被写入的email的值
         def clean_otherAttri(self):
            xx=self.cleaned_data.get('otherAttri')
             .....
            return xx

你可能感兴趣的:(4(form_validation about admin))