2013-02-18 3 views
1

En utilisant le Django REST framework J'ai ci-dessous le sérialiseur ci-dessous. Je voudrais ajouter des objets connexes (imbriqués) (ProductCatSerializer) à ProductSerializer. J'ai essayé ce qui suit ....Serializer Traiter avec des objets imbriqués

class ProductCatSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = ProductCat 
     fields = ('id', 'title') 

class ProductSerializer(serializers.ModelSerializer): 
    """ 
    Serializing the Product instances into representations. 
    """ 
    ProductCat = ProductCatSerializer() 

    class Meta: 
     model = Product 
     fields = ('id', 'title', 'description', 'price',) 

Donc ce que je veux arriver est des produits pour montrer sa catégorie liée imbriqués dans les résultats.

Merci.

Mise à jour:

En utilisant la profondeur = option 2 (merci Nandeep Mali) Je reçois maintenant les valeurs imbriquées, mais ils montrent que l'aide son ID et non keyparis comme le reste de la demande JSON (voir catégorie ci-dessous). C'est presque juste.

"results": [ 
     { 
      "id": 1, 
      "title": "test ", 
      "description": "test", 
      "price": "2.99", 
      "product_url": "222", 
      "product_ref": "222", 
      "active": true, 
      "created": "2013-02-15T15:49:28Z", 
      "modified": "2013-02-17T13:05:28Z", 
      "category": [ 
       1, 
       2 
      ], 
+0

Le modèle de 'ProductCatSerializer' ne devrait-il pas être quelque chose d'autre? En aparté, votre nom est vraiment en phase avec la question. –

+0

Avez-vous essayé? http://stackoverflow.com/questions/3753359/serializing-foreign-key-objects-in-django –

+0

désolé juste une erreur lors de la saisie de l'exemple, dow! corrigée. Nom oui lol :) – jason

Répondre

1

Votre exemple a presque raison, sauf que vous devez appeler le champ « productcat » (ou quel que soit le modèle relationshipt est appelé, mais sans CamelCase), et l'ajouter à vos champs.

class ProductCatSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = ProductCat 
     fields = ('id', 'title') 

class ProductSerializer(serializers.ModelSerializer): 
    """ 
    Serializing the Product instances into representations. 
    """ 
    productcat = ProductCatSerializer() 

    class Meta: 
     model = Product 
     fields = ('id', 'title', 'description', 'price', 'productcat') 
+0

parfait, j'apprends, lentement, mais en apprenant! Merci encore Tom. – jason

Questions connexes