0

Djangoには、次のmodels.pyがあります

class Product(RandomPrimaryIdModel):
  title = models.CharField(max_length=20, blank=True, null=True)
  price = models.CharField(max_length=20, blank=True, null=True)
  condition = models.CharField(max_length=20, blank=True, null=True)

class Mattress(Product):
  length = models.CharField(max_length=50)
  size = models.CharField(max_length=5)

class Pillow(Product):
  shape= models.CharField(max_length=50)
  comfort= models.CharField(max_length=5)     

アイデアは、「product」モデルといくつかの「product_type」モデルがあるということです。この 2 つを関連付けるデータベース スキームを作成しようとしています。最終的な目標は、product_type が不明なオブジェクトのプライマリ ID へのアクセスを許可したときに、そのオブジェクトをクエリ/フィルター処理して、そのオブジェクトの product_type を確認できるようにすることです。

少し混乱するように聞こえますが、正しい方法で実装するにはどうすればよいでしょうか? 現在のスキーム (上記のもの) は、私が信じている正しい解決策ではありません。

4

2 に答える 2

1

マルチテーブル継承に関するドキュメントによると、モデルの小文字の名前を参照できます。あなたの場合、「製品タイプ」を見つけるには、次のようにします。

product = Product.objects.get(id=12)
try:
    mattress = product.mattress
    is_mattress = True
except Mattress.DoesNotExist:
    is_mattress = False

これをヘルパー メソッドに抽象化して、テストを実行し、型を何らかの文字列または列挙型として返すことができます。

于 2012-08-10T05:07:50.940 に答える
0

オブジェクトへの参照がある場合、次のようなものを使用できませんか:

p = Product.objects.get(id=1)

class_of_p = str(p.__class__)

結果の文字列を解析します

"<class 'whatever.models.Pillow'>"

必要なものを見つけるには?何かが足りない場合はお詫び申し上げます。

于 2012-08-10T16:25:49.140 に答える