2017-09-22 4 views
0

Je suis nouveau sur Django alors la réponse à cette question est peut-être due à la terminologie.Django - Obtient un objet parent avec un objet pour enfants

Je suis en train de faire l'objet parent avec des enfants objets, j'ai:

#models.py 
class Category(models.Model): 
    name = models.CharField(max_length=255) 
    sub_category = models.ForeignKey(SubCategory) 
    title = models.CharField(max_length=255, null=True) 


#serializer.py 
class CategorySerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Category 
     fields = '__all__' 

#views.py 
Product.objects.all().filter(sub_category__category_id=category_id).select_related() 
products_serializer = ProductSerializer(products, many=True) 

    return Response({ 
     'data': products_serializer.data 
    }) 

Je suis en train de se parent catégorie objet dans les enfants des objets que j'ai déjà.

Merci à l'avance :)

+0

add 'models.py' fichier –

+0

Ajouté @AstikAnand –

Répondre

0

Vous avez déjà votre objet parent, vous pouvez y accéder à travers chacun de vos objets:

products = Product.objects.all().filter(sub_category__category_id=category_id) 
for product in products: 
    parent = product.parent # You already have it 

Pour une meilleure performance changer votre requête

Product.objects.all().filter(sub_category__category_id=category_id).select_related('parent') 

Comme commenté, vous pouvez le faire par sérialiseurs:

class ProductItemSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = ProductItem 

class ProductSerializer(serializers.ModelSerializer): 
    product_items = ProductItemSerializer(many=True, read_only=True) 

    class Meta: 
     model = Product 

class CategorySerializer(serializers.ModelSerializer): 
    products = ProductSerializer(many=True, read_only=True) 

    class Meta: 
     model = Category 

Maintenant, il suffit catégories et obtenir des produits et articles seront imbriqués

+0

Vous pouvez accéder à la totalité de la ligne de parent, vous pouvez un champ foreignkey dans votre entité enfant, ce sera rempli avec l'objet parent pas seulement l'identifiant – Serjik

+0

Merci pour votre commentaire @serjik mais j'essaye d'obtenir la rangée entière de parent: category_id = category_id –

+0

C'est peut sembler un peu peu clair mais; J'essaie d'obtenir l'objet parent commun avec tous ses enfants apparentés J'ai rendu l'exemple de code un peu plus détaillé si cela aide :) –