Reputation:
models.py
class Item(models.Model):
name=models.CharField(max_length=500)
short_description=models.CharField(max_length=500)
restaurant=models.ForeignKey(Restaurant,on_delete=models.CASCADE)
def __str__(self):
return str(self.name)
class ItemVariation(models.Model):
restaurant=models.ForeignKey(Restaurant,on_delete=models.CASCADE)
item=models.ForeignKey(Item,on_delete=models.CASCADE)
price=models.IntegerField(blank=True,null=True,default=0)
item_code=models.CharField(max_length=500)
keyword= models.ManyToManyField(Keyword)
image=models.ImageField(upload_to='dishes/', blank=True, null=True)
def __str__(self):
return str(self.id)
serializers.py
class ItemsSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields =('name','short_description')
class ItemVariationSerializer(serializers.ModelSerializer):
items = ItemsSerializer(many=True, read_only=True)
class Meta:
model = ItemVariation
fields ='__all__'
response:
{
"id": 7,
"price": 0,
"item_code": "test",
"image": "/media/dishes/download_3_kcE78IS.jpeg",
"restaurant": 1,
"item": 7,
"keyword": [
3
]
}
my response is like this but i'm not getting related field item in my response. can anyone suggest where i'm wrong. this code is returning ItemVariation object fields but i also need related item.
Upvotes: 0
Views: 39
Reputation: 88689
You're using items
in serializer and it's item
(without "s") in your model.
So, either use source
argument as
class ItemVariationSerializer(serializers.ModelSerializer):
items = ItemsSerializer(read_only=True, source='item')
class Meta:
model = ItemVariation
fields ='__all__'
OR
change items
to item
class ItemVariationSerializer(serializers.ModelSerializer):
item = ItemsSerializer(read_only=True)
class Meta:
model = ItemVariation
fields ='__all__'
Upvotes: 1