2011-03-02 12 views
4

アプリケーションエンジンのWebアプリケーションフレームワークでは、ポリモデルを使用して目標モデルを作成し、さまざまな種類の目標を表す多数の子モデルを作成できますフィールドの種類によって異なります。これにより、単にGoalエンティティを照会し、すべての子タイプを戻すことができます。アプリケーションエンジンのdjango-nonrelでのモデル継承

django-nonrelモデルを使用してこれを複製する方法はありますか? django-nonrelは基本クラスを抽象にする必要があるため、シンプルなモデル継承はうまくいかないようです。私はこれについて間違っているのでしょうか、それとも気づいていないのと同じ効果を達成する別の方法がありますか?

編集:私には、通常のDjangoモデル継承を使用し、必要に応じて基本Goalクラスを抽象に設定してサブモデルを作成し、目的のエンティティをクエリするのではなく、さまざまなサブクラスエンティティへの参照を含むListFieldを使用して各ユーザーのモデルを作成し、ListFieldを取得します。これは実行可能な選択肢のように見えますか?

答えて

0

あなたはdjangotoolboxListFieldを使用することができ、それは新しいタイプフィールドListFieldを持つジャンゴ・nonrelを拡張します、それはあなたがListPropertyと、フィールド内のすべての子エンティティを保存することができ、ちょうどジャンゴで1対多のタイプフィールドのようなものです。

ListFieldをハウツーに関する有用なドキュメントがあります:http://django-mongodb-engine.readthedocs.org/en/latest/topics/lists-and-dicts.html

モデルは

from djangotoolbox.fields import ListField 

class Post(models.Model): 
    ... 
    tags = ListField() 

使用

>>> Post(tags=['django', 'mongodb'], ...).save() 
>>> Post.objecs.get(...).tags 
['django', 'mongodb'] 

お知らせ

機能について、あなたはより良い代わりに外国のIDを保存異なる種類のオブジェクトを保存しているため、キーctsを1つのListFieldフィールドに追加します。 __del__関数をうまく再実装すると、削除がうまくいくことを確認できます。