from app01 import models from django.core.validators import RegexValidator from django.core.exceptions import ValidationError from django import forms from app01.utils.bootstrap import BootStrapModelForm class UserModelForm(BootStrapModelForm): name = forms.CharField( min_length=2, label="用户名", widget=forms.TextInput(attrs={"class": "form-control"}) ) class Meta: model = models.UserInfo fields = ["name", "password", "age", 'account', 'create_time', "gender"] class PrettyModelForm(BootStrapModelForm): # 验证:方式1 mobile = forms.CharField( label="手机号", validators=[RegexValidator(r'^1[3-9]\d{9}$', '手机号格式错误'), ], ) class Meta: model = models.PrettyNum # fields = "__all__" # exclude = ['level'] fields = ["mobile", 'price', 'level', 'status'] class MovieModelForm(BootStrapModelForm): class Meta: model = models.Movie exclude = ['id'] # 验证:方式2 def clean_mobile(self): txt_mobile = self.cleaned_data["mobile"] exists = models.PrettyNum.objects.filter(mobile=txt_mobile).exists() if exists: raise ValidationError("手机号已存在") # 验证通过,用户输入的值返回 return txt_mobile class PrettyEditModelForm(BootStrapModelForm): # mobile = forms.CharField(disabled=True, label="手机号") mobile = forms.CharField( label="手机号", validators=[RegexValidator(r'^1[3-9]\d{9}$', '手机号格式错误'), ], ) class Meta: model = models.PrettyNum fields = ['mobile', 'price', 'level', 'status'] # 验证:方式2 def clean_mobile(self): # 当前编辑的哪一行的ID # print(self.instance.pk) txt_mobile = self.cleaned_data["mobile"] exists = models.PrettyNum.objects.exclude(id=self.instance.pk).filter(mobile=txt_mobile).exists() if exists: raise ValidationError("手机号已存在") # 验证通过,用户输入的值返回 return txt_mobile