Как заполнить сериализатор пользовательскими и фиксированными данными?

Я создаю простую игру, в которой после входа в систему нужно создать персонажа. Моя первая проблема заключается в том, что я не знаю, как сопоставить персонажа, которого я хочу создать, с полем зарегистрированного пользователя (которое имеет отношение OneToOne). Я использую простой JWT для регистрации/входа в систему (который возвращает после входа только токен и токен обновления). Я хотел предварительно заполнить некоторые поля (например, hp установить на 100, lvl на 1 и т.д.). Мой подход заключается в следующем, но он не работает, всегда получаю что-то вроде
. "lvl": ["поле обязательно."] :

Serializer:

class CreateCharacterSerializer(serializers.ModelSerializer):
        hp = serializers.IntegerField(required=True)
        lvl = serializers.IntegerField(required=True)
    
        class Meta:
            model = Character
            fields = ('user', 'name', 'lvl', 'hp', 'current_hp',
                      'strength', 'agility',)
    
        def create(self, validated_data):
            instance = self.Meta.model(**validated_data)
            validated_data["lvl"] = 1
            instance.save()
            return instance

Просмотров:

class CharacterCreate(generics.CreateAPIView, PostUserWritePermission):
    permission_classes = [PostUserWritePermission]
    queryset = Character.objects.all()
    serializer_class = CharacterSerializer
    def post(self, request, format='json'):
        serializer = CreateCharacterSerializer(data=request.data)
        if serializer.is_valid():
            character = serializer.save()
            if character:
                json = serializer.data
                return Response(json, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Вернуться на верх