У меня есть две модели: сначала в качестве родительской модели «Страна», которые заполняются перед второй в качестве дочерней модели «Город». в дальнейшем
class Country(models.Model):
name = models.CharField(max_length=35)
icon = models.ImageField()
def __str__(self):
return self.name
class City(models.Model):
name = models.CharField(max_length=35)
country = models.ForeignKey(to=Country, on_delete=models.CASCADE)
def __str__(self):
return self.name
Мой serializers.py для моих нужд выглядит следующим образом:
class CountrySerializer(ModelSerializer):
class Meta:
model = Country
fields = '__all__'
class CitySerializer(ModelSerializer):
country = serializers.PrimaryKeyRelatedField(queryset=Country.objects.all())
class Meta:
model = City
fields = ('name', 'country')
view.py
class CountryAPIView(ListAPIView):
queryset = Country.objects.all()
serializer_class = CountrySerializer
permission_classes = [AllowAny, AllowAnonymous]
class CityAPIView(ListAPIView):
queryset = City.objects.all()
serializer_class = CitySerializer
permission_classes = [AllowAny, AllowAnonymous]
def post(self, request):
serializer = CitySerializer(data=request.data)
if serializer.is_valid(raise_exception=ValueError):
serializer.create(validated_data=request.data)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.error_messages,
status=status.HTTP_400_BAD_REQUEST)
теперь, когда я запускаю get api, он запускается и дает мне хороший результат. Но когда я пытаюсь создать новый город и установить «страну»: «id» в json, я получаю эту ошибку
Невозможно назначить «2»: «City.country» должен быть экземпляром «Country».
Итак, если я не понял, что мне нужно, так это точно установить внешний ключ для города, когда я создаю город, а не создавать город и страну,
пожалуйста, у кого-нибудь есть решение, помогите, потому что я пробовал много способов и читал документы django rest framework по этому вопросу, но я не понял.