Reputation: 439
Actual Return
{
"store_product_mapping":{
"master_product":{
"name": "abc",
"description": "xyz"
}
}
"selling_price": 445
}
Serializers looks like:
class GrandParentSerializer(serializers.ModelSerializer):
class Meta:
model = Z
fields = ('name', 'description')
class ParnetSerializer(serializers.ModelSerializer):
master_product = GrandParentSerializer(many=False, read_only=False)
class Meta:
model = Y
fields = ('master_product',)
class ChildSerializer(serializers.ModelSerializer):
store_product_mapping = ParnetSerializer(many=False, read_only=False)
class Meta:
model = X
fields = ('store_product_mapping', 'selling_price')
Am using nested rest_framework.serializer.ModelSerializer
to serialize the data from multiple levels but in response i need it to be like. Do I need to make a new dictionary and in a loop update the dictionary? Or is there a shortcut to do same?
{
"name": xyz
"description": abcd
"price": 10
}
Upvotes: 3
Views: 53
Reputation: 47354
You can use source
argument like this:
class ChildSerializer(serializers.ModelSerializer):
name = serializers.CharField(source='store_product_mapping.master_product.name')
description = serializers.CharField(source='store_product_mapping.master_product.description')
class Meta:
model = X
fields = ('name', 'description', 'selling_price')
Upvotes: 5