如何在单个属性中存储多个值

时间:2009-07-02 23:38:15

标签: python django e-commerce

我不知道我是否正确地想到这一点,也许有人会让我直截了当。

假设我有一个包含此内容的models.py:

class Order(models.Model):
  customer = models.foreignKey(Customer)
  total = models.charField(max_length=10)
  has_shipped = models.booleanField()

class Product(models.Model):
  sku = models.charField(max_length=30)
  price = models.charField(max_length=10)

现在,显然订单将包含产品而不仅仅是产品。将产品添加到订单的最佳方式是什么?我能想到的唯一方法是在“订单”中添加另一个名为“产品”的字段,并在其中填入带有sku的CSV。由于显而易见的原因,这并不理想,但我对这些东西并不擅长,也不知道更好的方法是什么。

(请记住这是伪代码,所以不要介意拼写错误等。)

3 个答案:

答案 0 :(得分:7)

您所追求的是产品与订单之间的多对多关系。

类似的东西:

class Order(models.Model):
  customer = models.foreignKey(Customer)
  total = models.charField(max_length=10)
  has_shipped = models.booleanField()
  products = models.ManyToManyField(Product)

查看文档herehere

答案 1 :(得分:0)

您可以创建另一个模型,该模型将作为订单和产品之间的多对多关系

类似这样的事情

class OrderProducts(models.Model)
     product = models.ForeignKey(Product)
     order = models.ForeignKey(Order)

答案 2 :(得分:0)

我不建议使用 ManyToMany 字段,因为价格需要保存为 char 字段以备将来参考。

制作两个模型:

  1. 订购

包括:订单号、客户详细信息、创建日期、付款详细信息

2.订单项

包括:产品、价格、数量、折扣、SKU

并在 Order 模型中使用 OrderItem 作为内联