0
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',) 

我有两个序列化器。愿望清单和产品。我想列出所有的愿望清单产品。现在它工作正常。但产品细节是“产品”关键因素。我可以删除该产品密钥,并显示产品详情以及wishlist_id吗?django rest框架:在相同路径中包含相关模型字段

现在的结果是:

{ 
     "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", 
      } 
     } 
     ] 
    } 

预期结果:

{ 
     "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", 
     } 
     ] 
    } 

回答

0

这是一个非常不好的做法,你需要很多的努力来实现序列化和反序列化,特别是在后,更新的情况下,等等 我能想到2种方法。 1)你可以在WishListSerializer使用丢失的领域SerializerMethodField 例如

product_id = serializers.SerializerMethodField() 

def get_product_id(self, obj): 
     return obj.get_product().product_id 

2)

class WishListSerializer(serializers.HyperlinkedModelSerializer): 
    product_id = serializers.CharField(source='product.product_id') 
    ....... 

    class Meta: 
     model = WishList 
     fields = (product_id, ......) 
相关问题