代码之家  ›  专栏  ›  技术社区  ›  Davtho1983

Django中的产品订单建模

  •  0
  • Davtho1983  · 技术社区  · 7 年前

    我有一个特定的产品清单的订单,我需要在Django模型这个。

    id
    email
    total_price
    line_items
    

    行项目是产品和所需产品实例数的字典。

    我需要一个产品和订单之间的多对多关系,因为每个产品可以是许多订单的一部分,但每个订单可以有许多产品-如果我可以有一个订单有一个产品的3个实例,另一个产品的2个实例等等,这在我的字段中看起来如何。。。?

    1 回复  |  直到 7 年前
        1
  •  7
  •   willeM_ Van Onsem    7 年前

    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

    推荐文章