У меня есть две модели сначала как родительская модель "Страна", которые заполнены до второй как дочерняя модель "Город".как следующий
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 itбеги и даешь результат в порядке.Но когда я пытаюсь создать новый город и установить «страну»: «id» в json, я получил эту ошибку
Невозможно присвоить «2»: «City.country» должен быть экземпляром «Country».
Так что, если мне неясно, что мне нужно, это точно установить внешний ключ для города, когда я создаю город, а не создавать город и страну,
, пожалуйста, у кого-нибудь была помощь в решении,потому что я попробовал много способов и прочитал об этом в документации по django rest framework, но у меня ничего не вышло.