[解決済み] models.pyが巨大化しているのですが、分割するのに一番良い方法は何ですか?
質問
上司からの指示です。
の中にロジックを入れないようにしたい。
models.py
. 今後は、データベースへのアクセスのためのクラスとしてのみ使用し、すべてのロジックはモデルクラスを使用する、またはラップする外部クラスで管理しましょう"。
これは間違った方法のような気がします。ファイルを小さく保つために、ロジックをモデルから除外するのは悪い考えだと感じています。ロジックがモデル内で最善であるならば、ファイルサイズに関係なく、本当にそこに行くべきです。
では、includeを使用するだけの簡単な方法はあるのでしょうか?PHP用語で言えば、私は監修者に、単に
models.py
に他の場所からモデルクラスをinclude()することを提案したいと思います。概念的には、これはモデルに必要なすべてのロジックを持たせることができ、かつ、ファイル数を増やすことによってファイルサイズを抑えることができます (これは競合などのリビジョン管理の問題を少なくすることにつながります)。
では、models.py ファイルからモデルクラスを削除しても、モデルがすべての Django ツールで動作するような簡単な方法はあるのでしょうか?あるいは、models.py ファイルが大きいという一般的な問題に対して、全く別の、しかしエレガントな解決法があるのでしょうか?どんな意見でもいいので、よろしくお願いします。
どのように解決するのですか?
Django は、1つの大きなアプリケーションではなく、多くの小さなアプリケーションを構築できるように設計されています。
すべての大きなアプリケーションの内部では、たくさんの小さなアプリケーションが自由であろうと闘っています。
もしあなたの
models.py
が大きく感じられたら、やりすぎです。 やめてください。 リラックスしてください。 分解してください。
より小さく、再利用可能な小さなアプリケーションの部品、または断片を見つけます。 このとき 実際に それらを再利用する必要はありません。 ただ、再利用できる可能性があると思えばいいのです。
アップグレードパスを検討し、いつか置き換えたいと思うようなアプリケーションを分解してください。 このとき 実際に しかし、将来よりクールなものに置き換わるかもしれない、独立したプログラミングのモジュールとして考慮することは可能です。
私たちには約12のアプリケーションがあり、それぞれ
model.py
は約 400 行以下のコードです。 これらはすべて、約半ダース以下の個別のクラス定義にかなり集中しています。(これらは厳しい制限ではなく、私たちのコードについての観察です)。
私たちは早期に、そして頻繁に分解します。
関連
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み] あるスクリプトを別のスクリプトから呼び出すには、どのような方法がありますか?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み】djangoのビジネスロジックとデータアクセスの分離
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] Python 2.7サポート終了?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
-
[解決済み] models.pyを複数のファイルに分割する