Django - Сериализатор конечных точек PUT должен игнорировать отсутствующие атрибуты
поэтому у меня есть эта конечная точка
def put(self, request):
user_uuid = get_uuid_from_request(request)
user_obj = User.objects.get(pk=user_uuid)
serializer = UpdateUserSerializer(user_obj, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
else:
return Response(dict(error=serializer.errors, user_msg=generic_error_message),
status=status.HTTP_400_BAD_REQUEST)
со следующим сериализатором
class UpdateUserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('given_name', 'middle_name', 'family_name', 'birthdate')
если входящий запрос имеет недостающие значения, как в
request.data ={'given_name':'Tom'}
В идеале я бы хотел, чтобы он обновлял все, что не отсутствует в текущей сущности. Как мне это сделать? В настоящее время, когда я тестирую его, если атрибут отсутствует, он жалуется.
Вы можете добавить флаг partial=True
в сериализатор для поддержки partial updates
:
serializer = UpdateUserSerializer(user_obj, data=request.data, partial=True)