Djangoプロジェクトで2つのアプリを接続する必要がありますが、一方から他方にモデルをインポートしたくありません。それらを「クリーン」に保つことで、後で別々に再利用できるようになります。
この特定のケースでは、これらの別々のアプリの2つのモデル間に多対多の関係が必要です。1つの解決策は、両方の外部キーを定義するモデルをメインプロジェクトアプリで作成することです。これはDjangoの方法ですか、それともより良い解決策がありますか?
Djangoプロジェクトで2つのアプリを接続する必要がありますが、一方から他方にモデルをインポートしたくありません。それらを「クリーン」に保つことで、後で別々に再利用できるようになります。
この特定のケースでは、これらの別々のアプリの2つのモデル間に多対多の関係が必要です。1つの解決策は、両方の外部キーを定義するモデルをメインプロジェクトアプリで作成することです。これはDjangoの方法ですか、それともより良い解決策がありますか?
多分あなたは一種のメディエーターパターンを探しています。アプリがお互いを知る必要がない場合、1つのアプローチは、両方を知る別のアプリを作成することです。
django-profiles、django-sorl、django-はすべて「多対1」タイプの関係として機能します。これらのプラグイン/アプリ(およびその他)のいずれかを使用することを選択すると、設計されたアプリがそれらの存在に依存するようになります。
オプション1:上記を考慮して...依存関係が一方向のみになるように、設計するアプリの1つを十分に汎用的にします(したがって、他のアプリはそれに依存しますが、その逆はありません)。これは、ほとんどのdjangoアプリがすでに行っていることです。
オプション2:各アプリが相互に依存関係を共有している場合は、同じアプリ/プラグインの一部として維持するだけで、生活が非常に簡単になります。