我想创建一个订单来购买这种结构中的多种东西:
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”?
我在这里很困惑: - /
答案 0 :(得分:0)
如果我明白这一点,我会做出这样的事情。
在业务和产品之间建立一个ManyToMany关系:
class Business(models.Model):
name = models.CharField(max_length=255)
address = models.MagicAddressField()
products = models.ManyToManyField(Product)
然后,在自定义表单和模板/视图中,您可以为每个商家添加包含每个商家的产品/广告的字段集。我现在看到的唯一复杂情况是,在填写表格并发送之后,您还需要定制“结账过程”以保存通过哪个业务购买的产品的信息......也许这可能是通过产品选项(?)完成,但任何方式它可能意味着很多自定义/使用信号;-)但我认为这是正确的方向。