2011-07-20 12 views
0

私はアプリケーションブログを作成すると言います[これはちょうどそこにあるのでapp.blog.postsを行うことができます - それは本当に単なるフォルダです]そしてブログの私ですブログの内部にアプリの投稿を作成し、投稿はモデル投稿を定義します。私はこれをした後、私はモデルの投稿(またはポストのような任意のモデル - 投稿するカテゴリフィールドを追加する)を拡張する必要がありますし、独自のテーブルを作成するブログでアプリケーションのカテゴリを作成します。これらのアプリケーションが完全に無関係な場合(exg:django-tags)、カテゴリはどのようにして最終的にそれを認識することなく投稿を拡張することができますか?私はちょっと混乱しているので、誰かが私に説明することができます(すでに例はないが、このような考え方に従う良い例は見つけられませんでした)。Django looseカップリングと既存のモデルを拡張する

+1

[Djangoの一般的な関係](https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#generic-relations)が解決策を提供するかもしれません。 [この記事](http://blog.swierczynski.net/2010/08/generic-relationships-in-django/)は、それらの行動を示しています。 – Paolo

答えて

2

"extend"何らかの形で機能を追加するには、一般的にsignalsが良いアイデアです。シグナルを使用すると、モデルファイルを変更することなく、モデルのメソッドの一部にフックすることができます。

ブログ投稿にカテゴリが必要な場合は、ブログ投稿に外部キーを使用するとどうなりますか?

djangoアプリケーションをできるだけジェネリックとして設計することは、常に良いアイデアです。つまり、再利用する可能性が高い場合は、独自のアプリケーションにしてください。

+0

モデルファイルを修正せずにモデル信号のリスニングの例を挙げることはできますか? –

関連する問題