1

我不知道我的想法是否正确,也许有人会纠正我。

假设我有一个包含以下内容的 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)

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

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

4

3 回答 3

7

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

就像是:

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

请参阅此处此处的文档。

于 2009-07-02T23:48:41.427 回答
0

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

像这样的东西

class OrderProducts(models.Model)
     product = models.ForeignKey(Product)
     order = models.ForeignKey(Order)
于 2009-07-02T23:45:30.277 回答
0

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

制作两个模型:

  1. 命令

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

2.OrderItem

含:产品、价格、数量、折扣、SKU

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

于 2021-02-12T12:34:55.670 回答