2011-06-25 7 views
0

DjangoとMVTの新機能ですので、愚かな質問であればお詫び申し上げます。私はいくつかの同様の質問を見てきましたが、もう少し明快さを探していますか、私は正しいことをしようとしているかどうかを探しています。Django、Models、Apps

ここに私が取り組んでいるものの簡略版があります。既存のデータベースへのDjangoインターフェースを設計しているとしましょう。データベースは古いもので、他のシステムはデータを追加します。 Djangoインターフェースは読み込み専用です。 4コンテンツテーブルを有する単純な構造:

  1. ウィジェット
  2. クリエーター(簡単にするために、各ウィジェット一人のクリエーターを有する)
  3. 顧客
  4. 次数(顧客多対多の注文、注文多くの対多くのウィジェット)

ウィジェット情報を表示し、データベース内のすべてのテーブルのモデルを作成する「ウィジェット」と呼ばれるDjangoアプリを作成することから始めました。これは素晴らしく、/ widget/1234のようなURLで、私は1234のIDを持つウィジェットの情報、Creatorテーブルの情報、そして何回注文されたのかを知ることができます。

私は顧客の情報(顧客テーブルのデータ、注文された注文、注文されたウィジェットなど)を表示する「顧客」というアプリを作成したかったのです。

私は間違ったことをしていますか?別の「顧客」アプリが必要ですか?

実際に別の「顧客」アプリが存在することが理にかなっている場合、モデルについてはどうしますか?彼らは同じデータベース内の同じテーブルを扱っているので、 "ウィジェット"アプリで使用されているモデルと同じです。他のアプリからインポートするだけですか?ありがとう!

答えて

3

いいえ、モデルごとに別々のアプリを作成する必要はありません。プロジェクト内の異なる機能セットごとにアプリケーションを作成する必要があります。あなただけのことを学んでいるので、(あなたのプロジェクトの名前で)1つのアプリケーションを作成し、それを使って学ぶべきです。

モデルに関しては、データベース内のテーブルを表現するレイヤーに過ぎず、データベースとのやりとりに伴う多くの重労働を簡単に処理できます。したがって、あなたの場合、既存のデータベース内の各テーブルのモデルを作成します:ウィジェット、作成者(これはあなたのUserテーブルへの外部キーリンクと考えることができます)、Customer、Order。

特定のデータを返す方法は、あなたの意見です。たとえば、あなたの例のurlを使って特定のウィジェットのすべてのデータを取得する場合、url/widget/1234はviews.pyページの関数を指しています。そこでは必要な情報をデータベースに問い合わせ、それをテンプレートに追加します。既存のデータベースを持っているので、あなたはDjangoのデフォルトのDBの命名規則を上書きする必要があること

widget = Widget.objects.get(id=1234) 

注:あなたの例では、クエリは、次のようになります。 https://docs.djangoproject.com/en/dev/topics/db/models/

しかし、私があなたに与えることができる最良のアドバイスは、あなたのプロジェクト/アプリケーションを数日間脇に置き、公式のDjangoチュートリアルとドキュメントを参照することです。

https://docs.djangoproject.com/en/dev/

+0

私は私のモデルが定義されている、またのForeignKeyなど、「manage.py inspectdb」コマンドのおかげで、と持っていたとの完全な:あなたが最初の学習、その信じられないほど十分に文書化し、習得が容易だ場合は特にいくつかのdb_columnとrelated_nameパラメータを追加するが、すべて良い。だから、私は/ウィジェット/ 1234複数のテーブルからのデータをプルし、テンプレートで出力している。私は機能が新しいアプリケーションに移動する必要があるとき私は確信していないことを推測する?つまり、これまでのアプリ(ウィジェット検索、ウィジェットの詳細ビュー)で純粋に「ウィジェット」のページを持っていて、「アプリ」や「注文」のページが欲しいのであれば、新しいものを作る?同じモデル。 – Raolin

+0

そして、答え、btwに感謝! – Raolin

+0

私は思ったよりずっと遠く離れているように聞こえる。新しいアプリを作成する必要がある場合の基準は、そのページのビューで簡単に処理できるため、ページのタイプに依存しません。むしろ、ドキュメントによれば、アプリは「Weblogシステム、公開されたレコードのデータベース、または単純な投票アプリケーションなど、何かを行うWebアプリケーション」です。あなたが持っているように思える本当にシンプルなアプリケーションを持っているなら、実際には1つのアプリしか必要ありません。 –