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

1 投票
3 回答
2380 浏览
提问于 2025-04-15 12:39

我不知道自己是不是在正确思考这个问题,也许有人能给我指正一下。

假设我有一个叫做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)

显然,一个订单应该包含多个产品,而不仅仅是一个产品。那么,最好的方法是什么呢?我能想到的唯一方法是给“订单”添加一个叫“products”的字段,然后用逗号分隔的字符串(CSV)来填充每个产品的SKU。显然,这种方法并不理想,但我对这些东西还不太熟悉,也不知道更好的方法是什么。

(请记住,这只是伪代码,所以拼写错误之类的不要在意。)

3 个回答

0

我不建议使用多对多字段,因为价格需要保存为字符类型,以便将来参考。

可以创建两个模型:

  1. 订单(Order)

这个模型包含:订单号、客户信息、创建日期和支付信息。

第二个模型是订单项(OrderItem)。

这个模型包含:产品、价格、数量、折扣和SKU(库存单位)。

并且在订单模型中将订单项作为内联使用。

0

你可以再创建一个模型,用来表示订单和产品之间的多对多关系。

大概可以这样做:

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

你想要的是产品和订单之间的多对多关系。

就像这样:

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

可以在文档中查看详细信息,这里这里都有相关内容。

撰写回答