2016-10-28 10 views
0

これは、私が達成しようとしていることです: 私はOneToOne関係を持つ2つのモデルAとBを持っています。モデルAのインスタンスは、常にそれぞれのモデルBインスタンスの前に作成されます。パラメータに依存して、異なる初期値でモデルbのインスタンスを初期化できるようにしたい。私が作ってみた何Djangoのモデル設定プリセットを提供する方法

がProtoTypeModelを定義し、そのような実際のモデルでそれをサブクラス化することです:dict = PrototypeB.objects.filter(**my criteria).values()[0]やDjangoの残りのフレームワークからカスタムシリアライザを使用することにより

from django.db import models 
#other imports 

class PrototypeB(models.Model): 
    #define all fields 

class B(PrototypeB): 
    pass 

、私は辞書を取得しますモデルBのインスタンスをインスタンス化するために使用することができます:B.objects.create(**dict)

これは適切な方法ですか、それとも私は巨大な点を見逃していますか?

ベスト、 D

答えて

0

誰もが彼のパス上に同じ質問時につまずく場合は、ここで私はそれをやった方法です。 最初に私は上記のソリューションを実装することを考えました。しかし、マルチテーブルの継承について調べてみると、実際には機能していないことがわかりました。

マルチテーブルの継承は、暗黙的なOneToOne _ptrフィールドを作成し、カスケード削除動作をトリガーし、Bのインスタンスが削除されると、arche型モデルが削除されます。

私はPrototypeBとBという2つのモデルを実装していますが、これは完璧に機能します。

関連する問題