【问题标题】:Get nested serialized data as one将嵌套的序列化数据作为一个获取
【发布时间】:2018-07-25 04:04:50
【问题描述】:

实际回报

{
"store_product_mapping":{
  "master_product":{
    "name": "abc",
    "description": "xyz"
    }
  }
"selling_price": 445
}

序列化器看起来像:

class GrandParentSerializer(serializers.ModelSerializer):
  class Meta:
  model = Z
  fields = ('name', 'description')

class ParnetSerializer(serializers.ModelSerializer):
  master_product = GrandParentSerializer(many=False, read_only=False)
  class Meta:
  model = Y
  fields = ('master_product',)

class ChildSerializer(serializers.ModelSerializer):
  store_product_mapping = ParnetSerializer(many=False, read_only=False) 
  class Meta:
  model = X
  fields = ('store_product_mapping', 'selling_price')

我使用嵌套的rest_framework.serializer.ModelSerializer 来序列化来自多个级别的数据,但作为响应,我需要它像这样。我需要制作一本新字典并循环更新字典吗?或者有没有捷径可以做同样的事情?

{
"name": xyz
"description": abcd
"price": 10
}

【问题讨论】:

    标签: python django django-models django-rest-framework


    【解决方案1】:

    您可以像这样使用source 参数:

    class ChildSerializer(serializers.ModelSerializer):
          name = serializers.CharField(source='store_product_mapping.master_product.name') 
          description = serializers.CharField(source='store_product_mapping.master_product.description') 
    
          class Meta:
              model = X
              fields = ('name', 'description', 'selling_price')
    

    【讨论】:

      猜你喜欢
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多