Как сделать некоторые поля необязательными в Django ORM

Я написал функцию, которая регистрирует пользователя. В моем стерилизаторе поле имени является необязательным, но всякий раз, когда я пытаюсь создать пользователя без указания имени, я просто сталкиваюсь с KeyError: 'name'. Что мне нужно сделать, чтобы этот код работал?

def post(self, request):
        if request.user.is_anonymous:
            data = RegisterationSerializer(data=request.data)
            if data.is_valid():
                User.objects.create_user(email=data.validated_data['email'], username=data.validated_data['username'],
                 password=data.validated_data['password'], name=data.validated_data['name'])    
                return Response({
                "message": f'{data.validated_data["email"]} account was created successfully'
                }, status=status.HTTP_201_CREATED)
            
            else:
                return Response(data.errors, status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response({
                "message": "You already authorized"
            }, status=status.HTTP_400_BAD_REQUEST)

Проблема в том, что вы пытаетесь получить доступ к name в вашем validated_data. Но там нет имени.

вы можете сделать что-то вроде User.objects.create_user(**data.validated_data) или вы можете сделать

User.objects.create_user(
        email=data.validated_data['email'], 
        username=data.validated_data['username'],
        password=data.validated_data['password'], 
        name=data.validated_data['name'] if 'name' in data.validated_data else '') # or None  
Вернуться на верх