jdango正则表达式怎么写?表单验证正则python,验证数据唯一性
分类: python 标签: jdango正则表达式怎么写?表单验证正则
2024-08-13 17:51:14 275浏览
jdango正则表达式怎么写?表单验证正则,表单校验数据唯一
from django.core.validators import RegexValidator from django.core.exceptions import ValidationError
class HaomaModelForm(forms.ModelForm): mobile=forms.CharField(max_length=11,required=True,label='手机号',validators=[RegexValidator(r'^[1][3,4,5,7,8,9][0-9]{9}$','手机号格式错误')]) class Meta: model=Haoma #显示全部字段 # fields="__all__" # 排除不显示的字段 # exclude=['level'] fields=['mobile','price','level','state'] def __init__(self,*args,**kwargs): super().__init__(*args,**kwargs) for name,field in self.fields.items(): field.widget.attrs={"class":"form-control","required":"required" } #验证手机号唯一性 def clean_mobile(self): #用户输入的手机号 inp_mobile=self.cleaned_data['mobile'] #获取表单里的主键pk就是id id=self.instance.pk ex_mobile=None if id: #编辑,exclude(id=id)表示id!=xxx ex_mobile=Haoma.objects.exclude(id=id).filter(mobile=inp_mobile).exists() else: #添加,数据库查询是否存在 ex_mobile=Haoma.objects.filter(mobile=inp_mobile).exists() if ex_mobile: raise ValidationError('手机号已存在') return inp_mobile
models.xml
from django.db import models # Create your models here. class Haoma(models.Model): # id默认自动生成自增长 # unique=True手机号唯一 mobile=models.CharField(max_length=11,verbose_name='手机号',unique=True) price=models.DecimalField(max_digits=10,decimal_places=2,verbose_name='价格') levelitems=( (4,'钻石级别'), (3,'黄金级别'), (2,'白银级别'), (1,'黄铜级别'), ) level=models.SmallIntegerField(verbose_name='级别',choices=levelitems,default=1) stateitems=( (1,'已占用'), (0,'未占用') ) state=models.SmallIntegerField(verbose_name='状态',choices=stateitems,default=0)
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
暂无评论,快来写一下吧
展开评论
您可能感兴趣的博客
他的专栏
他感兴趣的技术