Я пытаюсь отправить запрос POST с моего внешнего интерфейса, чтобы добавить новую запись «Достижения».Запись достижений имеет поле внешнего ключа, относящееся к набору, который содержит множество достижений.Однако при попытке сохранить я получаю сообщение об ошибке: "{" set ": [" Неверный тип.Ожидаемый объект идентификатора ресурса, получен Set. "]}" Я не знаю, что такое "тип идентификатора ресурса", и не могу найти в нем никаких документов при поиске в Интернете.Вот мои данные POST-запроса: {"достижение": {"title": "Rails - это Omakase", "description": "Lorem ipsum", "experience": 100, "set": "52"}}
Я пытался установить "set" для идентификатора набора и экземпляра сериализатора "Set" перед сохранением.
Serializers.py
class SetSerializer(serializers.ModelSerializer):
class Meta:
model = Set
fields = ('id', 'title', 'description')
class AchievementSerializer(serializers.ModelSerializer):
class Meta:
model = Achievement
fields = ('id', 'title', 'description', 'experience', 'set')
models.py
class Set(models.Model):
title = models.CharField(max_length=100, blank=False)
description = models.TextField()
class JSONAPIMeta:
resource_name = "sets"
class Achievement(models.Model):
title = models.CharField(max_length=100, blank=False)
description = models.TextField()
experience = models.IntegerField()
set = models.ForeignKey(Set, on_delete=models.CASCADE, related_name="achievements")
views.py
class AchievementList(APIView):
def post(self, request):
data = request.data["achievement"]
setId = data["set"]
set = Set.objects.get(pk=setId)
data["set"] = set
serializer = AchievementSerializer(data=data)
if serializer.is_valid():
serializer.save()
return JsonResponse({"achievement":serializer.data}, safe=False)
return JsonResponse(serializer.errors, status=400)