0

我正在尝试为 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"
)

我在正确的轨道上吗?任何帮助/建议将不胜感激!

4

1 回答 1

0

两者都AbstractModel没有ProxyModel帮助,因为它们都没有为您的数据创建表(没有抽象产品表,也没有代理特殊产品表)。

我真的不明白为什么你需要OneToOneField你的Product模型,因为你继承了所有的Product字段,SpecificProduct但是如果你需要引用基本产品实例,那是一种方法。考虑django-mptt你的树状模型。它为树状结构提供了许多有用的工具。

于 2017-02-22T16:04:16.517 回答