0

私はDjangoでインベントリタイプのプロジェクト用のモデルを作成しようとしていますが、私のモデルをどのように定義するのかはわかりません。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

どちらもAbstractModelでもProxyModelもどちらもデータのテーブル(抽象的な製品テーブルとプロキシの特別な製品テーブルなし)を作成しないので便利です。

あなたはSpecificProductProductフィールドのすべてを継承していますが、行くための方法だ基本製品のインスタンスへの参照が必要な場合は、あなたのProductモデルにOneToOneFieldを必要とする理由私は本当に得ることはありません。あなたの木のようなモデルのためにdjango-mpttを検討してください。それは木のような構造のための多くの有用なツールを提供します。

関連する問題