有两个表
例如水烟和烟草
对于购物篮模型,您需要将这两个模型结合起来,帮助
例如:
class Hookah(model.Model):
name = models.Charfield()
description = .....
price = .......
class Tabacco(model.Model):
name = models.Charfield()
description = .....
price = .......
和OrderItem模型:
class OrderItem(model.Model):
在这里,我需要传递前两个模型,作为一个产品,该怎么做? 即将水烟筒和Tabacoo合并成一个
请帮助我
答案 0 :(得分:0)
我认为在这种情况下,您可能应该考虑构建单个产品模型,并具有将产品类型分开的type属性。这样,您就可以将FK转换为具有订单项模型的单个产品模型。
类似这样的东西:
models.py
class Type(models.Model):
...
name = models.CharField(max_length=50)
...
class Product(models.Model)
name = models.CharField(max_length=150)
description = models.TextField()
type = models.ForeignKey(Type, on_delete=models.DO_NOTHING)
class Order(models.Model):
...
product = models.ForeignKey(Product, on_delete=models.DO_NOTHING)
....
答案 1 :(得分:0)
如果我的理解正确,那么您想要一个Basket
模型来存储其他类型的链接吗?您可以通过创建每个购物商品所继承的父模型来做到这一点,也可以使用允许指向任何模型对象的GenericForeignKey
来做到这一点。共享父模型可能更好,因为您不必为购物物品(例如name
,price
等)重复编写代码。
class ShoppingItem(model.Model)
name = models.Charfield()
description = .....
price = .......
class Hookah(ShoppingItem):
height = ....
class Tabacco(ShoppingItem):
flavour = ....
然后您可以执行以下操作之一:
class OrderItem(model.Model): # info on a single ordered item
item = models.ForeignKey(ShoppingItem, on_delete=models.DO_NOTHING)
class Basket(model.Model): # basket of many `ShoppingItem`
items = models.ManyToManyField(ShoppingItem)