Я решил это, определив RestaurantItemSerializer следующим образом, который также включает модель отношения обратного внешнего ключа:
class RestaurantItemImagesSerializer(ModelSerializer):
class Meta:
model = RestaurantItemImages
fields = ['image']
class RestaurantItemSerializer(ModelSerializer):
restaurantitemimages_set = RestaurantItemImagesSerializer(many=True)
class Meta:
model = RestaurantItem
fields = ['name','description','price','restaurantitemimages_set']
Теперь вместо того, чтобы использовать запрос фильтра выше, я просто вызываю свой связанный объект и затем сериализую его, используя этот сериализатор в моем представлении API на основе функций.
restaurantitem_obj = RestaurantItem.objects.filter(restauraunt__slug=slug)
featured_items = RestaurantItemSerializer(restaurantitem_obj,many=True)
Он дает желаемый результат, как показано ниже:
{
"featured_items": [
{
"name": "Item 1",
"description": "Test Description",
"price": 700.0,
"restaurantitemimages_set": [
{
"image": "/media/WlE875w.jpg"
},
{
"image": "/media/ASqUIVb.png"
}
]
},
{
"name": "Item2",
"description": "adasdasd",
"price": 100.0,
"restaurantitemimages_set": []
},
{
"name": "Roll (1)",
"description": "asdasda",
"price": 213.0,
"restaurantitemimages_set": []
}
]
}