Python 在Django中选择哪种类型的模型继承
我正试图为Django中的一个库存类型项目编写模型,但不确定如何最好地定义我的模型。我是否选择抽象基类、多表继承、代理模型或其他方法来让模型按照这些要求运行:Python 在Django中选择哪种类型的模型继承,python,django,database-design,django-models,model-inheritance,Python,Django,Database Design,Django Models,Model Inheritance,我正试图为Django中的一个库存类型项目编写模型,但不确定如何最好地定义我的模型。我是否选择抽象基类、多表继承、代理模型或其他方法来让模型按照这些要求运行: 可以跟踪产品库存水平的通用产品模型 管理员用户必须能够通过管理员添加新的通用产品 可以将硬件序列号添加为属性的特定产品型号 特定产品可与我的订单/客户型号关联 是否有可能做到这一点,并让它满足我的要求,没有任何问题,或有更好的方法 class Product(models.Model): name = models.CharF
- 可以跟踪产品库存水平的通用产品模型
- 管理员用户必须能够通过管理员添加新的通用产品
- 可以将硬件序列号添加为属性的特定产品型号
- 特定产品可与我的订单/客户型号关联
class Product(models.Model):
name = models.CharField(max_length=250)
description = models.TextField(blank=True)
price = models.DecimalField(max_digits=8, decimal_places=2)
stock_level = models.IntegerField()
class SpecificProduct(Product):
product = models.OneToOneField(Product)
order = models.OneToOneField(Order)
owner = models.OneToOneField(Customer)
serial_nr = models.CharField(blank=True, max_length=250)
理想情况下,我希望有这样的行为:
customer = Customer.objects.create([. . .])
order = Order.objects.create([. . .])
widget = Product.objects.create([. . .])
my_widget = SpecificProduct.objects.create(
product=widget,
order=order,
owner=customer,
serial_nr="12345"
)
我走对了吗?任何帮助/建议都将不胜感激 无论是
AbstractModel
还是ProxyModel
都不会有帮助,因为它们都不会为您的数据创建表(没有抽象产品表,也没有代理特殊产品表)
我真的不明白为什么在继承SpecificProduct
中的所有Product
字段时,需要将OneToOneField
添加到Product
模型中,但如果需要引用基本产品实例,这是一种方法。考虑你的树状模型<代码> django MPTT/COD>。它为树状结构提供了许多有用的工具