GenericForeignKeyを共通クラスに…

2007/01/09 00:17

※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】

関連コンテンツ用のモデルに、GenericRelationを定義したい。

関連コンテンツに指定できるということは、関連コンテンツのリストテーブルからGenericForeignKeyを貼られるということが確定している訳だから。

GenericRelationやGenericForeignKeyはそれ自体ではテーブルにカラムを作成しないので、models.Modelではないベースク ラスに定義しても大丈夫だと考えたんだけど、甘かった。

ベースクラスに定義しちゃうと、django.db.models.fields.generic.GenericRelationのままになっちゃう。モデルに定 義した時と同じdjango.db.models.fields.generic.GenericRelatedObjectManagerにしたいんだけど…

毎回阿呆みたいにモデルに同じことを定義させたくない。 Pythonならなんとかできそうな気がする。誰か教えて!

2007/01/09 00:39 by perezvon
「models.Modelではないベースクラスにリレーションをはる」というケースが発生するというのが、よく分からないのですが、もう少し詳しく教えていただけるでしょうか?
2007/01/09 11:16 by makoto
書き方がまずかったです。「models.Modelではないベースクラスに定義」じゃなくて、「models.Modelとともに親クラスに指定するベースクラスからGenericRelationを定義」でした。
例えば、GenericForeignKeyで複数種類のモデル(X,Y,Z)に関連づけられるタグのモデルがあるとします。
X,Y,Zは不特定多数ではなく、モデル定義の段階で特定するものとします。
「X,Y,Zのどのモデルも、x.tags, y.tags, z.tagsで関連をたどりたいので、models.Modelと別にタグのモデルと関連を持っていることを知っているスーパークラスを用意したい。」ということです。

Prev Entry

Next Entry