更改Django Rest Framework的默认模型串行器返回的JSON结构的好方法是什么?
例子 -
DRF现在返回的餐厅对象:
{
"id":9,
"label":"Pizza Hut"
"like_id:":32,
"like_quantity":2
}
更理想的json结构:
{
"id":9,
"label":"Pizza Hut",
"social": {
"like_id:":32,
"like_quantity":2
}
}
为了制作json结构,我希望将默认JSON中的几个字段嵌套在一个新字段下。
对我来说更好的解决方案是SerializerMethod
在您的服务器中使用Serializer
。例如:
class RestaurantSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(source='id')
label = serializers.CharField(source='label')
social = serializers.SerializerMethod(method_name='pick_social_fields')
def is_restaurant_liked(self, restaurant):
# some logic here
return is_liked
def pick_social_fields(self, restaurant):
like_id = self.is_restaurant_liked(restaurant)
like_quantity = restaurant.like_set.count
return {
'like_id': like_id,
'like_quantity': like_quantity
}
此解决方案对我来说更好,因为您不必覆盖DRF视图中的任何内容。您只需要在Serializer
类中定义一个方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句