2009-07-02 37 views
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) 

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

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

回答

7

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

喜欢的东西:

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

看到文档herehere

0

您可以创建一个多个模型将作为许多一对多关系秩序和产品之间

这样的事

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

这是多余的,因为订单本身已经作为“产品订单” – drozzy 2009-07-03 18:06:58

+0

是的,但在答案中。 当我写这个答案时,我只是不记得类型models.ManyToManyField在Django所以提出了经典的解决方案。 – tdelev 2009-07-04 13:41:12

相关问题