我不知道我是否正确地想到这一点,也许有人会让我直截了当。
假设我有一个包含此内容的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。由于显而易见的原因,这并不理想,但我对这些东西并不擅长,也不知道更好的方法是什么。
(请记住这是伪代码,所以不要介意拼写错误等。)
答案 0 :(得分:7)
您所追求的是产品与订单之间的多对多关系。
类似的东西:
class Order(models.Model):
customer = models.foreignKey(Customer)
total = models.charField(max_length=10)
has_shipped = models.booleanField()
products = models.ManyToManyField(Product)
答案 1 :(得分:0)
您可以创建另一个模型,该模型将作为订单和产品之间的多对多关系
类似这样的事情
class OrderProducts(models.Model)
product = models.ForeignKey(Product)
order = models.ForeignKey(Order)
答案 2 :(得分:0)
我不建议使用 ManyToMany 字段,因为价格需要保存为 char 字段以备将来参考。
制作两个模型:
包括:订单号、客户详细信息、创建日期、付款详细信息
2.订单项
包括:产品、价格、数量、折扣、SKU
并在 Order 模型中使用 OrderItem 作为内联