私は Django を使って作業しているだけで、これまでのところ本当に気に入っていますが、問題があり、それを解決する典型的な方法がわかりません。
複雑なPythonオブジェクトが更新されたときに更新されるはずのビューがあるとしますが、このオブジェクトはデータベースによって駆動されません。たとえば、AJAX呼び出しによって、またはユーザーまたは何かによって直接駆動されます。
このコードはどこに行きますか? まだmodels.pyに入るべきですか????
私は Django を使って作業しているだけで、これまでのところ本当に気に入っていますが、問題があり、それを解決する典型的な方法がわかりません。
複雑なPythonオブジェクトが更新されたときに更新されるはずのビューがあるとしますが、このオブジェクトはデータベースによって駆動されません。たとえば、AJAX呼び出しによって、またはユーザーまたは何かによって直接駆動されます。
このコードはどこに行きますか? まだmodels.pyに入るべきですか????
あなたmodels.pyは空になることができます(そして時々空になります)。データベースにマップするモデルを用意する義務はありません。
models.pyDjango の管理者を満足させるために、まだファイルが必要です。models.pyファイル名は重要であり、さまざまな管理コマンドが期待するファイルを変更しようとするよりも、空のファイルを使用する方が簡単です。
「モデル」は、一般に、データベースにマップする必要はありません。「モデル」は、MVC 設計の一般的なコンポーネントとして、何でもかまいません。
ビューが使用する独自の「モデル」モジュールを定義することができます。 Django 管理者を混乱させるため、呼び出さないでください。models.py アプリケーションにとって意味のある名前を付けてください: foo.py. これfoo.pyは、必ずしも DjangoModel.modelサブクラスではなく、アプリケーションを支える実際のものを操作します。
Django MVC はデータベース マッピングを必要としません。 指定されたモジュールにデータベース マッピングがあることを明示的に想定しています。models.py したがって、models.py実際のデータベース マッピングがない場合は空を使用してください。
あなたviews.pyが使用することができます
import foo
def index( request ):
objects = foo.somelistofobjects()
*etc.*
Django を使用すると、データベース マッピングなしで簡単に作業できます。モデルは簡単に何でもかまいません。とは呼ばないでくださいmodels.py。
編集します。
ビューはモデルに登録されていますか? いいえ。
コントローラーによるモデルの更新時に、ビューに通知されますか? いいえ。
これは本当にMVPであるため、モデルは厳密にデータ表現ですか? はい。
Django のドキュメントを読んでください。それは簡単です。
Web リクエスト -> URL マッピング -> ビュー機能 -> テンプレート -> レスポンス。
モデルはビュー機能で使用できます。モデルは、データベース マッピングにすることも、その他のものにすることもできます。