line_items
是一个产品字典和该产品所需的实例数。
我建议
不
把它存到字典里。在关系数据库中,通常将其存储在多个记录的不同表中。这样做的好处是很容易
查询
因此,我们通常有三个表:
+-------+ 1 N +--------------+ N 1 +---------+
| Order |----------| OrderProduct |----------| Product |
+-------+ +--------------+ +---------+
| email | | quantity |
+-------+ +--------------+
Order
,
OrderProduct
和
Product
,例如:
Order(models.Model):
email = models.EmailField()
Product(models.Model):
# ...
pass
OrderProduct(models.Model):
order = models.ForeignKey(Order, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
class Meta:
unique_together = ('order', 'product')
product1 = Product.objects.create()
product2 = Product.objects.create()
my_order = Order.objects.create(email='foo@bar.com')
OrderProduct.objects.create(product=product1, order=my_order)
OrderProduct.objects.create(product=product2, order=my_order, quantity=14)
所以在这里我们构建了两个产品和一个订单,我们添加了两个
product1
,和一个
product2
有大量的
14