2009-11-03 61 views
2

我想創建一個訂單購買多件事情在這種結構:定製的Satchmo存儲配置/過程

Business Data 1 
---Product A 
---Product B 
Business Data 2 
---Product A 

也就是說,我想賣產品A,B,但是在這之前完成我需要在「業務數據」對象中添加其他彙總數據。那就是:

Business 1: Joe's Plumbing, located at ... ... ... 
---Product A, standard ad appearing in category 3, with text "awesome plumbing" 
---Product B, cooler ad appearing in category 9, with text "cheap plumbing" 
Business 2: Joe's Burgers, located at ... ... ... 
---Product A, standard ad appearing in category 4, with text "zzz" 

,或者從模型的水平,更像是:

class Business(models.Model): 
    name = models.CharField(max_length=255) 
    address = models.MagicAddressField() 

class Ad(models.Model): 
    category = models.ForeignKey(Category) 
    text = models.CharField(max_length=255) 
    business = models.ForeignKey(Business) 

現在,而不是重新實現整個購物車的後端,我敢肯定,我想用Satchmo。然而,我在遇到麻煩的時候遇到了麻煩。

Satchmo似乎有多個產品選項,但它們都是「平坦」的。也就是說,雖然我可以很容易地讓Satchmo允許最終用戶購買產品A和產品B,但數據庫並未顯示與商業1的關聯,並且產品A和產品B等商品名稱必須重複。

我想我可以用我自己的意見/模板解決這個問題,如果我只能獲得最終的「產品實例」,那麼satchmo在訂單中有一個外鍵給我創建自己的商業表。換句話說,我想使廣告模型的Satchmo custom product model - 我想......

但如果我只是改變廣告到:

class Ad(Product): 
    objects = ProductManager() 

    category = models.ForeignKey(Category) 
    text = models.CharField(max_length=255) 
    business = models.ForeignKey(Business) 

這不是錯誤的語義?這不是說「這種產品類型與商業x有關」,而不是「當你購買這個產品時,產品的實例將指向商業x」?

我很困惑在這裏: -/

回答

0

如果我理解這一點吧,我會做這樣的事情。

讓您的業務和產品之間的多對多關係:

class Business(models.Model): 
    name = models.CharField(max_length=255) 
    address = models.MagicAddressField() 
    products = models.ManyToManyField(Product) 

然後,您的自定義表單和模板/視圖上,您​​可以用每個企業的產品/廣告添加爲每個業務一個字段。我現在看到的唯一複雜情況是,在填寫表格併發送之後,您還需要定製「結賬流程」來保存哪些產品通過哪些業務獲得的信息......也許這可能是通過產品選項(?)完成,但任何方式可能意味着很多定製/處理信號;-)但我認爲這是正確的方向。