Как заполнить сериализатор пользовательскими и фиксированными данными?
Я создаю простую игру, в которой после входа в систему нужно создать персонажа.
Моя первая проблема заключается в том, что я не знаю, как сопоставить персонажа, которого я хочу создать, с полем зарегистрированного пользователя (которое имеет отношение 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)