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

私は2つのシリアライザを持っています。ウィッシュリストと製品。私はすべてのウィッシュリスト製品をリストしたいと思います。今はうまくいく。しかし、製品の詳細は "製品"の重要な要素です。そのプロダクトキーを削除してwishlist_idと一緒に商品の詳細を表示できますか?django rest framework:関連するモデルフィールドを同じパスに含めます。

現在の結果:

{ 
     "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, ......) 
関連する問題