我正在尝试为Django中的库存类型项目编写模型,我不确定如何最好地定义我的模型。我是否选择抽象基类,多表继承,代理模型或其他东西来使我的模型按照这些要求运行:
是否可以这样做并让它满足我的要求而没有任何问题或是否有更好的方法?
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"
)
我是否在正确的轨道上?任何帮助/建议将不胜感激!
答案 0 :(得分:0)
AbstractModel
和ProxyModel
都不会有用,因为这些都不会为您创建数据表(没有抽象产品表,也没有代理特殊产品表)。
当您继承OneToOneField
中的所有Product
字段时,我真的不明白为什么您需要Product
SpecificProduct
模型,但是如果您需要参考基本产品实例,这是一种方法。考虑django-mptt
您的树状模型。它为树状结构提供了许多有用的工具。