2017-10-12 6 views
0

Je veux créer des produits de vente croisée:M2M relations à soi avec attribut.

class Product(models.Model): 
    name = models.CharField(max_length=150, blank=True, default='') 
    ... 

class CrossSellingProduct(models.Model) 
    parent_product = models.ForeignKey(Product, related_name='cross_sellings') 
    associate_product = models.ForeingKey(Product) 
    double_sided = models.BooleanField(default=1) 

Je veux appeler la fonction cross_selling_products sur l'instance de produit et de voir tous les produits qui sont associés. Si double_sided est True je peux voir le produit associé dans la manière bouth, si False seulement parent ->associated_products.

Est-ce une façon intelligente de mettre en œuvre cela? Je vous remercie.

Répondre

0

Donc, fondamentalement, vous voulez implémenter une relation ManyToMany du modèle Produit à lui-même? Vous pouvez le faire par

class Product(models.Model): 
    name = models.CharField(max_length=150, blank=True, default='') 
    cross_selling_products = models.ManyToManyField("self") 
    ... 

Ensuite, vous pouvez accéder à la cross_selling_products sur une instance de Product.