2009-11-03 71 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) 

然后,您的自定义表单和模板/视图上,您​​可以用每个企业的产品/广告添加为每个业务一个字段。我现在看到的唯一复杂情况是,在填写表格并发送之后,您还需要定制“结账流程”来保存哪些产品通过哪些业务获得的信息......也许这可能是通过产品选项(?)完成,但任何方式可能意味着很多定制/处理信号;-)但我认为这是正确的方向。