0

我正在嘗試爲Django中的庫存類型項目編寫模型,但我不確定如何最好地定義我的模型。難道我選擇抽象基類,多表繼承,代理模式或別的東西讓我的模型,根據這些要求的行爲:在Django中選擇哪種類型的模型繼承

  • 的通用產品模型,可以追蹤庫存水平的產品的
  • Admin用戶必須能夠通過管理來添加一個新的通用產品
  • ,可以有連續的號碼添加爲一個屬性
  • 具體產品可以用我的訂單/客戶模型相關聯的硬件具體產品型號

是否可以做到這一點,並讓它滿足我的要求,沒有任何問題或有更好的方法?

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

AbstractModelProxyModel都不會有幫助,因爲它們都不會爲您創建數據表(不包括抽象產品表和代理特殊產品表)。

我真的不明白爲什麼你需要OneToOneFieldProduct模型,你繼承所有Product領域的SpecificProduct但如果你需要參考基礎產品實例是很長的路要走。考慮django-mptt爲您的樹狀模型。它爲樹狀結構提供了很多有用的工具。