2010-12-11 5 views
0

私はいくつかのモデルをベースモデルから継承しています。 ベースモデルのフィールドはめったに必要ありませんが、Djangoは継承されたモデルを使用するたびに複雑な内部結合を行い、フィールドを取得します。 これを避けるにはどうすればDjangoに伝えることができますか?私はこのモデルではほとんどフィールドが必要ではありません。Django:モデル継承の内部結合を減らす方法は?

注:多分のみ(..)(私はチェックしませんでした)仕事だろうが、私はコード内の多くの場所でそれを追加する必要があります。..

答えて

1

使用abstract model inheritance

つまり、ベースクラスのメタにabstract = Trueを設定すると、Djangoは抽象継承を使用します。つまり、各派生モデルには、ベースモデルで定義されたすべてのフィールドのコピーが含まれます。ところで

、Djangoのメンテナの1、ジェイコブカプラン・モスhas quite a strong opinion against concrete inheritance

モデルの継承も足に 自分を撮影するために本当に 絶好の機会を提供しています。具体的な (マルチテーブル)相続

と再び:

私は目をいただきたいです堂々とDjangoユーザー 具体的な 大量の懐疑的な継承の任意の使用に近づくことをお勧めします。

個人的に、私はモデル継承を全く使用する必要はありませんでした。しかし、そのブログエントリを読んだ後は、できるだけ具体的な継承を避けようと確信しています。

+0

...これを回避する唯一のpossiblityは、あなたのベースクラスabstractなっているか、あなたは「base'-テーブルをヒットしていないいくつかのカスタムSQLクエリを作成すると思います。私が照会してベースクラス(テーブル)を使用する問題。それ以外は、継承を完全に避けます。 – GabiMe

+0

基本モデルの実装を作成すると、何も追加されません。 –

+0

Kaplan-Mossは継承に対して強い意見を持っているようです。実装する前にこれを読んでおきたいと思います。 – GabiMe

0

私は右

関連する問題