I’ve a list of dictionaries and want to get rid of the external list array. Take into consideration the array below,
[
{
"stores": [
{
"id": 1,
"storeName": "Green Mart",
"lat": 12.905616,
"lon": 77.610101,
"offer": [
{
"offer": "Get 10% OFF on Fruits & Vegetables"
}
]
},
]
}
]
My serializer looks like,
class storesSerializer(serializers.ModelSerializer):
offer = StoreOffersSerializer(read_only=True, many=True)
storeName = serializers.CharField(source="store_name")
lat = serializers.FloatField(source="latitude")
lon = serializers.FloatField(source="longitude")
class Meta:
model = Vendors
fields = ('id', 'storeName', 'lat', 'lon', 'offer')
class CategoryStoreSerializer(serializers.ModelSerializer):
stores = storesSerializer(read_only=True, many=True)
class Meta:
model = CategoryStore
fields = ('stores',)
and the view definition is,
if request.method == 'POST':
c = CategoryStore.objects.filter(category=request.data['cat_id'])
serializer = CategoryStoreSerializer(c, many=True)
return Response(serializer.data)
Advertisement
Answer
You can use the index of list to refer to the inner dictionary and omit the outer bracket.
a = [
{
"stores": [
{
"id": 1,
"storeName": "Green Mart",
"lat": 12.905616,
"lon": 77.610101,
"offer": [
{
"offer": "Get 10% OFF on Fruits & Vegetables"
}
]
},
]
}
]
The below is the output of a[0]:
{
"stores": [
{
"id": 1,
"storeName": "Green Mart",
"lat": 12.905616,
"lon": 77.610101,
"offer": [
{
"offer": "Get 10% OFF on Fruits & Vegetables"
}
]
},
]
}