2017-10-12 43 views
0

我想創建交叉銷售產品:帶有屬性的自我的M2M關係。

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) 

我想打電話產品實例功能cross_selling_products,看看哪些是相關聯的所有產品。如果double_sidedTrue我可以用bouth的方式查看相關產品,如果False只有parentassociated_products

是否有一些聰明的方法來實現這個?謝謝。

回答

0

所以基本上你想實現一個ManyToMany關係從模型產品自己?你可以做到這一點的

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

然後你就可以在Product的情況下訪問cross_selling_products