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, ......) 
相關問題