Менеджер не доступен через экземпляры User

Я пытаюсь вставить email, но возникает ошибка Manager is not accessible through User instances. вот мой код ниже

from django.contrib.auth import get_user_model from django.contrib.auth.models import Group from rest_framework import serializers from rest_framework.validators import UniqueValidator из rest_framework_simplejwt.serializers import TokenObtainPairSerializer

from .models import Trip, User


class UserSerializer(serializers.ModelSerializer):
    email = serializers.EmailField(
            required=True,
            validators=[UniqueValidator(queryset=User.objects.all())]
            )
    password1 = serializers.CharField(write_only=True)
    password2 = serializers.CharField(write_only=True)
    group = serializers.CharField()

    def validate(self, data):
        if data['password1'] != data['password2']:
            raise serializers.ValidationError('Passwords must match.')
        return data

    def create(self, validated_data):
        group_data = validated_data.pop('group')
        group, _ = Group.objects.get_or_create(name=group_data)
        data = {
            key: value for key, value in validated_data.items()
            if key not in ('password1', 'password2')
        }
        data['password'] = validated_data['password1']
        user = self.Meta.model.objects.create_user(**data)
        user.objects(validated_data['email'])
        user.groups.add(group)
        user.save()
        return user

    class Meta:
        model = get_user_model()
        fields = (
            'id', 'username', 'password1', 'password2',
            'email', 'first_name', 'last_name', 'group',
            'photo',
        )
        read_only_fields = ('id',)


class LogInSerializer(TokenObtainPairSerializer):
    @classmethod
    def get_token(cls, user):
        token = super().get_token(user)
        user_data = UserSerializer(user).data
        for key, value in user_data.items():
            if key != 'id':
                token[key] = value
        return token

user.objects(validated_data['email'])

в этой строке ваш user является экземпляром, а не моделью. поэтому вы не можете вызвать objects. Я полагаю, что вам просто нужно

user.email = email
user.groups.add(group)
user.save()

Вернуться на верх