0

関連する質問いくつ読んだことがありますが、私の場合のベスト プラクティスが明確ではありません。私は学習しようとしているデータベース 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 を使用する典型的な解決策はありますか? この問題に取り組むために次に何を勉強すればよいかについて、何らかの指示が欲しいだけです。ヒントをいただければ幸いです。ありがとうございました。

4

1 に答える 1

0

You can do things like Manufacturer.objects.filter(product__name__icontains='something'), just add a name of the field in Product.

于 2012-10-31T01:17:54.617 に答える