Как сделать некоторые поля необязательными в 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