Olá, boa tarde. Estou fazendo uns testes e surgiu uma dúvida. Tenho dois Models:
class StateModel(models.Model):
Id = models.AutoField(primary_key=True)
Name = models.CharField(max_length = 255, null=False)
UF = models.CharField(max_length = 2, null=False)
class CityModel(models.Model):
Id = models.AutoField(primary_key=True)
Name = models.CharField(max_length = 255, null=False)
State = models.ForeignKey(StateModel, on_delete=models.CASCADE)
Os seguintes serializers
class StateSerializer(serializers.ModelSerializer):
class Meta:
model = StateModel
fields = '__all__'
class CitySerializer(serializers.ModelSerializer):
State = StateSerializer(read_only=True)
class Meta:
model = CityModel
fields = '__all__'
e o view
class CityViewSet(viewsets.ModelViewSet):
queryset = CityModel.objects.all()
serializer_class = CitySerializer
A minha intenção é fazer a requisição get e trazer os dados com o join. Isso até que está funcionando, mas se eu fizer um post passando o ID do estado para cadastrar uma nova cidade não funciona mais, pois dá erro, pois na URL de cadastro de nova cidade na rota "http://localhost:8000/city/" só aparece o campo "name" e não as opções de estado já cadastrados. Por outro lado, se eu remover a linha do join (State = StateSerializer(read_only=True)) volta a funcionar. Alguém tem alguma ideia de como fazer funcionar o join e os outros verbos continuarem funcionando por padrão?
Na imagem a seguir podem ver que não aparece mais o campo para selecionar o estado