From eceedaef4cb18bec767089a8e05a0545e237b064 Mon Sep 17 00:00:00 2001 From: wxg0103 <727495428@qq.com> Date: Tue, 7 Jul 2026 09:50:48 +0800 Subject: [PATCH] refactor: modify user model to remove unique constraint on nick_name and update migration --- .../migrations/0002_alter_user_nick_name.py | 18 ++++++++++++++++++ apps/users/models/user.py | 2 +- apps/users/serializers/user.py | 11 +---------- 3 files changed, 20 insertions(+), 11 deletions(-) create mode 100644 apps/users/migrations/0002_alter_user_nick_name.py diff --git a/apps/users/migrations/0002_alter_user_nick_name.py b/apps/users/migrations/0002_alter_user_nick_name.py new file mode 100644 index 00000000000..0486dd18de2 --- /dev/null +++ b/apps/users/migrations/0002_alter_user_nick_name.py @@ -0,0 +1,18 @@ +# Generated by Django 6.0.6 on 2026-07-07 01:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='nick_name', + field=models.CharField(db_index=True, max_length=150, verbose_name='昵称'), + ), + ] diff --git a/apps/users/models/user.py b/apps/users/models/user.py index 0f480d89fde..d68130c242c 100644 --- a/apps/users/models/user.py +++ b/apps/users/models/user.py @@ -17,7 +17,7 @@ class User(models.Model): id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id") email = models.EmailField(unique=True, null=True, blank=True, verbose_name="邮箱", db_index=True) phone = models.CharField(max_length=20, verbose_name="电话", default="", db_index=True) - nick_name = models.CharField(max_length=150, verbose_name="昵称", unique=True, db_index=True) + nick_name = models.CharField(max_length=150, verbose_name="昵称", db_index=True) username = models.CharField(max_length=150, unique=True, verbose_name="用户名", db_index=True) password = models.CharField(max_length=150, verbose_name="密码") role = models.CharField(max_length=150, verbose_name="角色") diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index 193e4b4c2bb..991080b388b 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -231,15 +231,12 @@ def is_valid(self, *, raise_exception=True): def _check_unique_username_and_email(self): username = self.data.get("username") email = self.data.get("email") - nick_name = self.data.get("nick_name") - user = User.objects.filter(Q(username=username) | Q(email=email) | Q(nick_name=nick_name)).first() + user = User.objects.filter(Q(username=username) | Q(email=email)).first() if user: if user.email == email: raise ExceptionCodeConstants.EMAIL_IS_EXIST.value.to_app_api_exception() if user.username == username: raise ExceptionCodeConstants.USERNAME_IS_EXIST.value.to_app_api_exception() - if user.nick_name == nick_name: - raise ExceptionCodeConstants.NICKNAME_IS_EXIST.value.to_app_api_exception() class Query(serializers.Serializer): username = serializers.CharField(required=False, label=_("Username"), max_length=64, allow_blank=True) @@ -415,12 +412,6 @@ class UserEditInstance(serializers.Serializer): def is_valid(self, *, user_id=None, raise_exception=False): super().is_valid(raise_exception=True) self._check_unique_email(user_id) - self._check_unique_nick_name(user_id) - - def _check_unique_nick_name(self, user_id): - nick_name = self.data.get("nick_name") - if nick_name and User.objects.filter(nick_name=nick_name).exclude(id=user_id).exists(): - raise AppApiException(1008, _("Nickname is already in use")) def _check_unique_email(self, user_id): email = self.data.get("email")