Django Rest Framework: Как запросить проверку данных перед сериализаторами?

Я хочу проверить переменную email перед UserSerializer, а затем вернуть данные фильтра, следующий код работает, но я объявил два сериализатора, если я хочу использовать один сериализатор. сериализатор, как я могу это сделать?

views.py

@api_view(['GET'])
def get_user(request):
    email = request.data.get('email')
    serializer = UserSerializer(data=request.data)

    if serializer.is_valid():
        Users = User.objects.filter(email=email)
        serializer = UserSerializer(Users, many= True)

        return Response({"status": "success", "data": serializer.data})
    else:
        return Response({"status": "errors", "data": serializer.errors})

serializers.py

class UserSerializer(serializers.ModelSerializer):
    email = serializers.EmailField(required=True)
    phone = serializers.CharField(required=False)
    sex = ChoiceField(required=False, choices=User.TYPE_CHOICES)

    class Meta:
        model = User
        fields = ('id', 'email', 'phone', 'name','sex', 'updated', 'created')

models.py

class User(models.Model):
    TYPE_CHOICES = (
        ('0', 'men'),
        ('1', 'girl'),
        ('2', 'nobody'),
    )

    email = models.EmailField(unique=True, max_length=50)
    phone = models.TextField(unique=True, max_length=11)
    name = models.TextField(default="AKA")
    sex = models.CharField(
        max_length=2,
        choices=TYPE_CHOICES,
        default="0"
    )
    updated = models.DateTimeField(auto_now=True)
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        db_table = "users"

Пользовательский сериализатор для проверки электронной почты

class EmailSerializer(serializers.Serializer):
    email = serializers.EmailField(required=True)
@api_view(['GET'])
def get_user(request):
    
    serializer = EmailSerializer(data=request.data)

    if serializer.is_valid():
        email = serializer.validated_data['email']
        Users = User.objects.filter(email=email)
        serializer = UserSerializer(Users, many= True)

        return Response({"status": "success", "data": serializer.data})
    else:
        return Response({"status": "errors", "data": serializer.errors})

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