自定义Satchmo商店配置/流程

时间:2009-11-03 17:35:37

标签: django product 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,但数据库显示没有与Business 1的连接,并且必须在产品A和B中重复诸如商业名称之类的事情。 / p>

我想我可以通过我自己的观点/模板解决这个问题,如果我能得到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”?

我在这里很困惑: - /

1 个答案:

答案 0 :(得分:0)

如果我明白这一点,我会做出这样的事情。

在业务和产品之间建立一个ManyToMany关系:

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

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