Django rest framework depth serializer only in to_representation

Viewed 328

I have a model with many foreing keys. I want to do a POST with only ids and recieve a response with depth 1. When I set depth=1 it´s doesn´t work.

class State(models.Model):
   name = models.CharField(max_length=255)

class City(models.Model):
   state = models.ForeingKey(State, on_delete=models.PROTECT)
   name = models.CharField(max_length=255)

class CitySerializer(serializers.ModelSerializer):
   class Meta:
       model = City
       fields = '__all__'

I wanna post some like this

{
"state":1,
"name":"City Name"
}

And get

{
"id":1,
"name":"City Name",
"state":{
           "id":1,
           "name": "State Name"
        }
}
1 Answers

Did you try to make a StateSerializer and use it in CitySerializer?

class StateSerializer(serializers.ModelSerializer):
    class Meta:
        model = State
        fields = '__all__'

class CitySerializer(serializers.ModelSerializer):
    state = StateSerializer(read_only=True)

    class Meta:
        model = City
        fields = '__all__'

Check the doc here.

Related