Получение нулевого значения в столбце "userId_id" отношения "pnrDB_run при отправке POST на бэкенд django

Все еще очень новичок в Django. Сейчас я пытаюсь отправить пост-запрос на бэкенд из Insomnia и получаю ошибку Getting null value when I'm passing in the ID value.

Вот мой серализатор:

class RunSerialzer(serializers.HyperlinkedModelSerializer):
gameId = GameSerialzer(
    read_only = True
)
userId = UserSerialzer(
    read_only = True  
)
class Meta:
    model = Run
    fields=('id','name','isComplete','deaths','badges','userId','gameId')

Мое мнение:

class RunList(generics.ListCreateAPIView):
queryset = Run.objects.all()
serializer_class = RunSerialzer

И моя просьба:

{
"gameId":1,
"userId": 1,
"name":"testrun2",
"deaths":0,
"badges": 0,
"isComplete": false
}

и второй, который я пробовал

{
"gameId": {
        "id": 1,
        "name": "Vintage White",
        "photo": "https://archives.bulbagarden.net/media/upload/thumb/0/08/White_EN_boxart.png/250px-White_EN_boxart.png"
    },
"userId": {
        "id": 1,
        "name": "TestUser"
    },
"name":"testrun2",
"isComplete": false,
"deaths": 0,
"badges": 0
}

Мне кажется, что мне нужно создать либо новый Serailizer, чтобы получить нужный мне экземпляр в моей модели Game с пк, который я передаю в запросе

поскольку вы используете read_only=True в вашем сериализаторе для двух ваших полей, вам нужно передать gameId и userId вручную в save метод сериализатора.

В вашем представлении (RunList) вы должны переписать метод perform_create следующим образом:

def perform_create(self, serializer):
    gameId = self.request.data.get('gameId')
    userId = self.request.data.get('userId')
    return serializer.save(gameId=gameId, userId=userId)
Вернуться на верх