Получена ошибка AttributeError при попытке получить значение для поля `user_name` на сериализаторе `UserRegistrationSerializer`.
Я пытаюсь создать пользовательскую модель пользователя с ролью пользователя, но при регистрации пользователей я получаю одну и ту же ошибку
вот что я сделал
MY USER MODEL.PY
class User(AbstractBaseUser, PermissionsMixin):
class RoleType(models.TextChoices):
SCHOOL = 'SCHOOL'
PARENT = 'PARENT'
role = models.CharField(max_length=50, choices=RoleType.choices, default=RoleType.SCHOOL)
user_name = models.CharField(max_length=255, unique=True, db_index=True)
email = models.EmailField(max_length=255, unique=True, db_index=True)
is_verified = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
USERNAME_FIELD = 'user_name'
REQUIRED_FIELDS = ['email']
objects = UserManager()
def __str__(self):
return self.email
def tokens(self):
refresh = RefreshToken.for_user(self)
return {
'refresh': str(refresh),
'access': str(refresh.access_token)
}
РОДИТЕЛЬСКИЙ MODEL.PY
class Parent(models.Model):
# other fields related to student ...
Parental_code = models.CharField(max_length=10, unique=True)
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="user", null=True)
THE SERIALIZER.PY
class UserRegistrationSerializer(serializers.ModelSerializer):
RoleType = {
'SCHOOL': 'SCHOOL',
'PARENT' : 'PARENT'
}
role = serializers.ChoiceField(
choices=RoleType, default=RoleType['PARENT'])
class Meta:
model = User
fields = ['user_name', 'password', 'email', 'role']
extra_kwargs = {
'password': {'write_only': True},
'email': {'required': True},
'user_name': {'required': True}
}
def create(self, validated_data):
user = User.objects.create_user(**validated_data)
return user
class ParentSerializer(serializers.ModelSerializer):
user = UserRegistrationSerializer(write_only=True)
class Meta:
model = Parent
fields = ['Parental_code', 'user']
def create(self, validated_data):
user_data = validated_data.pop('user')
user = User.objects.create_user(**user_data)
user = Parent.objects.create(user=user, **validated_data)
return user
ОШИБКА, КОТОРУЮ Я ПОЛУЧАЮ
Я пытался проверить орфографию, но не нашел никаких проблем в этой области
AttributeError: Got AttributeError when attempting to get a value for field `user_name` on serializer `UserRegistrationSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `Parent` instance.
Original exception text was: 'Parent' object has no attribute 'user_name'.
я застрял и нуждаюсь в помощи, я думаю, что проблема где-то в сериализаторе или моделях
Поле User.user_name
не существует. Модель Django contrib User
определяет поле username
. См. https://docs.djangoproject.com/en/5.0/ref/contrib/auth/#fields