web-dev-qa-db-ja.com

Djangoアプリ間でモデルを共有する

簡単に説明します。Djangoアプリの精神とアイデアで作業するには、アプリが別のアプリ内からモデルをインポートすることは問題ありませんか?たとえば、ユーザー統計アプリが次のようなユーザーアプリ:users.modelsからユーザーをインポートする

31
Nicu Surdu

公開される可能性のない内部アプリを作成している場合は、必要なことをすべて行ってください。

一般にリリースされる可能性はほとんどないが、将来または現在の開発者によって使用される可能性がある内部アプリを構築する場合は、必ずですが、アプリが適切に機能するために何が必要かを必ず文書化してください。

公開リリース用のアプリを作成している場合は、それを自己依存的に維持するようにしてください(そしてDjango-internalsに依存します。つまり、Djangoが提供するものを使用します)。サードパーティアプリを機能させるか、サードパーティアプリでコードを管理しやすくする場合は、依存関係を含めますが、必ずall要件と必要な設定を文書化してください。

ほとんどの場合、十分なドキュメントがあればほとんど何でもできます。

ただし、Djangoの組み込みauth.Userと同じ名前の独自のUserモデルを作成することの正しさを疑う必要があります。

22
eternicode

答えはイエスです。 Djangoプロジェクト内の1つのアプリケーションが別のアプリケーションからモデルをインポートすることは問題ありません。Djangoプロジェクトの力は、アプリとその相互作用にあります。

また、ユーティリティアプリケーションがより一般的なアプリケーションからモデルをインポートしていることを確認してください。したがって、「userstatistics」アプリは「users」アプリからモデルをインポートする必要がありますが、「users」アプリは「userstatistics」に依存するべきではありません。

アプリがサードパーティのアプリケーション(Django-pistonなど)からモデルをインポートする場合は、要件ファイルでそのことを指定してください。

29
tarequeh

よりよく試すことができます Django継承を伴うユーザーモデル を拡張します。Djangoカスタムフィールドを追加したユーザーを使用するので、すべてのアプリで同じユーザーになります。

1
Teodor Pripoae