我想创建一个订单以购买这种结构中的多个东西:
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,但 db 显示与业务 1 没有任何联系,并且必须在产品 A 和 B 中重复诸如业务名称之类的内容。
我想我可以用我自己的视图/模板来解决这个问题,只要我能获得 satchmo 在订单期间销售的最终“产品实例”,以便拥有我自己创建的 Business 表的外键。换句话说,我想让 Ad 模型成为一个 satchmo定制产品模型——我认为......
但是,如果我只是将 Ad 更改为:
class Ad(Product):
objects = ProductManager()
category = models.ForeignKey(Category)
text = models.CharField(max_length=255)
business = models.ForeignKey(Business)
这不是错误的语义吗?这不是说“此产品类型与业务 x 相关联”,而不是“当您购买此产品时,该产品的实例将指向业务 x”?
我在这里很困惑:-/