计划:
代码:
from django.contrib.auth.models import AbstractUser from django.core.exceptions import ValidationError from django.db import models # 自定义用户模型 class CustomUser(AbstractUser): phone_number = models.CharField(max_length=11) def clean(self): super().clean() # 额外字段验证逻辑,例如验证手机号码长度 if len(self.phone_number)!= 11: raise ValidationError({'phone_number': '手机号码必须为 11 位'}) # 创建用户并添加额外验证 from django.contrib.auth import get_user_model def create_custom_user(username, email, password, phone_number): User = get_user_model() try: user = User( username=username, email=email, password=password, phone_number=phone_number ) user.full_clean() # 触发验证 user.save() return user except ValidationError as e: # 处理验证错误 raise ValueError(f"创建用户失败: {str(e)}") except Exception as e: # 处理其他异常 raise ValueError(f"创建用户时发生错误: {str(e)}")
计划:
代码: