如何使用Django Serializer实现单模型的嵌套序列化输出?
方案1:实现基础嵌套返回格式
无需修改现有模型和视图代码,仅需调整ProductSerializer的定义,通过SerializerMethodField自定义嵌套的price字段即可:
from rest_framework import serializers from .models import Product class ProductSerializer(serializers.ModelSerializer): price = serializers.SerializerMethodField() class Meta: model = Product fields = ["product", "price"] def get_price(self, obj): # 直接从当前Product实例提取字段组装为嵌套字典 return { "price_1": obj.price_1, "price_2": obj.price_2 }
修改后直接调用原有视图即可得到你需要的第一种返回格式。
方案2:实现数字key的优化返回格式
仅需修改get_price方法的返回结构即可:
def get_price(self, obj): return { 1: obj.price_1, 2: obj.price_2 }
注意:JSON规范中对象的键仅支持字符串类型,最终返回时数字key会被自动转为字符串格式的"1"、"2",不影响前端正常读取使用。
内容的提问来源于stack exchange,提问作者Adriano174
相关产品推荐
相关产品推荐

