ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python - 编辑数据- 修改手机号-已存在禁止录入 - 校验

2022-04-09 13:02:38  阅读:195  来源: 互联网

标签:手机号 form instance python self request 校验 mobile 录入


'''为靓号编辑 设立一个类'''
class NumberEditModelForm(forms.ModelForm):

    # 限制修改字段  注意mobile 字段放的位置
    # mobile = forms.CharField(disabled=True, label='号码')

    # 重新定义一次 手机号的格式问题
    mobile = forms.CharField(
        label='手机号',
        validators = [RegexValidator(r'^1[3-9]\d{9}$', '手机号格式错误')],
    )

    class Meta:
        model = models.Number
        fields = ['mobile', 'price', 'ji', 'zhuang']

        # 重定义方法 添加input 样式
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # 循环出所有字段, 并用插件 插入 clas 样式
        for name, field in self.fields.items():
            # if name == 'name':
            #     continue
            field.widget.attrs = {"class": "form-control", "placeholder": field.label}

    # 方法2  钩子方法  clean_字段名(self)
    # 校验已经存在的手机号 禁止入库
    def clean_mobile(self):
        #  self.instance.pk 显示主键id

        # 获取用户传入的数据
        text_mobile = self.cleaned_data['mobile']
        # exists() 验证手机号是否存在
        exists = models.Number.objects.exclude(id=self.instance.pk).filter(mobile=text_mobile).exists()
        if exists:
            # 使用 ValidationError 需要引入 from django.core.exceptions import ValidationError
            # 验证不通过
            raise ValidationError('手机号已经存在')

        # 验证通过
        return text_mobile


'''编辑靓号'''
def number_edit(request, nid):
    row_obj = models.Number.objects.filter(id=nid).first()
    if request.method == 'GET':
        form = NumberEditModelForm(instance=row_obj)
        return render(request, 'number_edit.html', {'form':form})
    form = NumberEditModelForm(data=request.POST, instance=row_obj)
    if form.is_valid():
        # 如果想额外保存其他字段方法 form.instance.字段名 = 值
        form.save()
        return redirect('/number/list')
    #校验不合法返回当前页面
    return render(request, 'number_edit.html', {'form':form})

 

标签:手机号,form,instance,python,self,request,校验,mobile,录入
来源: https://www.cnblogs.com/longly1111/p/16121565.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有