関連する質問をいくつか読んだことがありますが、私の場合のベスト プラクティスが明確ではありません。私は学習しようとしているデータベース n00b ですので、忍耐に感謝します。私の状況は次のとおりです。
- メーカー、リセラー、ServiceNRepairの3種類の企業(約10属性を共有)
- 5 種類の製品: StuffedAnimals、Bicycles、Barbies (一部の属性も共有)
したがって、物事をDRYに保つために、複数テーブルの継承を試しました:
# company.models.py
class GenericCompany(models.Model):
name, description, address, etc
class Manufacturer(GenericCompany): #can manufacture different things
stuff_specific_to_manufacturers
product = models.ManyToMany(GenericProduct)
class Reseller(GenericCompany): #can sell different things
stuff_specific_to_manufacturers
product = models.ManyToMany(GenericProduct)
etc for ServiceNRepair
同様に製品についても
# product.models.py
class GenericProduct(models.Model):
name, price, color, etc
class StuffedAnimal(GenericProduct):
fluffyness, ears_or_not, etc
class Bicycle(GenericProduct):
wheel_diameter, weight, etc
etc for Barbies
今、次のようなクエリを実行する必要があります
- 赤のすべての製品を表示する (これは簡単です)
- このメーカーはどのような製品を生産していますか?
- 再販業者 X が販売するすべての自転車を検索する
しかし、M2Mでそれを行うことはできますか? Manufacturer.objects.filter(product_icontains ='something')
そのようなことはうまくいきません。それで、私は完全に間違った道を進んでいますか?ContentTypes を使用する典型的な解決策はありますか? この問題に取り組むために次に何を勉強すればよいかについて、何らかの指示が欲しいだけです。ヒントをいただければ幸いです。ありがとうございました。