django rest框架:在同一路径中包含相关的模型字段

django rest框架:在同一路径中包含相关的模型字段,django,django-models,django-rest-framework,django-serializer,Django,Django Models,Django Rest Framework,Django Serializer,我有两个序列化程序。愿望清单和产品。我想列出所有愿望清单上的产品。现在很好用。但产品细节是“产品”的关键要素。我是否可以删除该产品密钥,并显示产品详细信息以及愿望列表id 目前的结果: class ProductSerializer(serializers.ModelSerializer): class Meta: model = Product fields = ('id','product_id','sku', 'title','price','imag

我有两个序列化程序。愿望清单和产品。我想列出所有愿望清单上的产品。现在很好用。但产品细节是“产品”的关键要素。我是否可以删除该产品密钥,并显示产品详细信息以及愿望列表id

目前的结果:

class ProductSerializer(serializers.ModelSerializer):

    class Meta:
       model = Product
       fields = ('id','product_id','sku', 'title','price','images')

class WishListSerializer(serializers.ModelSerializer):
      product = ProductSerializer()

      class Meta:
        model = WishList
        fields = ('wishlist_id','product',)
预期结果:

 {
      "count": 2,
      "next": null,
      "previous": null,
      "results": [
        {
          "wishlist_id":1,
          "product": {
            "id": 1460,
            "product_id": "04396134-3c90-ea7b-24ba-1fb0db11dbe5",
            "sku": "bb4sd817",
            "title": "Trinity Belt",

          }
        },
        {
          "wishlist_id":2,
          "product": {
            "id": 596,
            "product_id": "52588d22-a62c-779b-8044-0f8d9892e853",
            "sku": "ml346",
            "title": "Martina Liana",
          }
        }
      ]
    }

这是一种非常糟糕的做法,需要花费大量精力来实现序列化和反序列化,尤其是在Post、Update等情况下。 我可以想出两种方法。 1) 您可以在WishListSerializer中将缺少的字段用作SerializerMethodField 范例

(二)

您可以在
至\u表示中“取消”项目
上面有文件

    {
      "count": 2,
      "next": null,
      "previous": null,
      "results": [
        {
          "wishlist_id":1,
          "id": 1460,
          "product_id": "04396134-3c90-ea7b-24ba-1fb0db11dbe5",
          "sku": "bb4sd817",
          "title": "Trinity Belt",

        },
        {
          "wishlist_id":2,
          "id": 596,
          "product_id": "52588d22-a62c-779b-8044-0f8d9892e853",
          "sku": "ml346",
          "title": "Martina Liana",
        }
      ]
    }
product_id = serializers.SerializerMethodField()

 def get_product_id(self, obj):
        return obj.get_product().product_id
class WishListSerializer(serializers.HyperlinkedModelSerializer):
    product_id = serializers.CharField(source='product.product_id')
    .......

    class Meta:
        model = WishList
        fields = (product_id, ......)
...
class WishListSerializer(serializers.ModelSerializer):
    product = ProductSerializer()

    class Meta:
        model = WishList
        fields = ('wishlist_id', 'product',)

    # add 
    def to_representation(self, instance):
        data = super().to_representation(instance)
        flat_data = dict(wishlist_id=data['wishlist_id'], **data['product']) # construct (new dict) flat data 
        # or you could restructure same dict: data.update(data.pop('product')) 
        return flat_data