如何在Django模型中添加手机号码验证器?
Django模型内配置手机号码合法性校验规则实现方案
实现步骤
1. 自定义手机号校验函数
首先定义独立的校验函数,接收字段值作为入参,校验不通过时抛出ValidationError异常即可。
2. 模型字段绑定校验规则
在手机号对应的CharField字段的validators参数中,传入自定义校验函数、以及内置的长度校验器即可完成配置。
完整可运行代码示例
# 先导入依赖模块 from django.core.exceptions import ValidationError from django.core import validators from django.db import models from django.contrib.auth.models import AbstractUser from django.utils.translation import gettext_lazy as _ # 自定义手机号校验函数 def validate_mobile_number(value): if not str(value).isdigit(): raise ValidationError("请输入合法的手机号码") # 模型定义 class ModelA(AbstractUser): mobile = models.CharField( _("手机号码"), unique=True, max_length=10, validators=[validate_mobile_number, validators.MinLengthValidator(limit_value=10)] )
补充说明
- 上述示例适配10位长度的纯数字手机号规则,如需适配国内11位手机号,可将
max_length和MinLengthValidator的limit_value参数调整为11,也可在校验函数中增加正则匹配逻辑,限制号段格式 - 配置完成后,模型执行save操作、ModelForm/Admin表单提交时都会自动触发该校验规则,无需额外编写调用逻辑
内容的提问来源于stack exchange,提问作者Akash Nagtilak
相关产品推荐
相关产品推荐

