2016-08-07 11 views
1

私のプロジェクトでは、現在、2つの異なる投稿タイプがありますが、将来的にはより多くの投稿タイプがあります:投稿レビュー両方ともコメントできるので、同じのコメントモデルを共有することができます。Django:異なる投稿タイプの同じコメントモデル

投稿とレビュー(と最終的には他の投稿タイプ)の2つの異なるアプリケーションを作成した場合、同じコメントモデルをGenericForeignKeyと共有する必要がありますか、または各アプリで同じコメントモデルを特定の外部キー?それとも、私はちょうどユニークな共通のアプリにすべての投稿の種類を置く必要がありますか?

+0

GenericForeignKeyを使用することをお勧めします。それはあなたにドライを与え、誰も持っていない奇妙な問題に遭遇することはありません。 –

+0

コメントモデルはどこに置くべきですか? –

+0

別のアプリに配置します。 –

答えて

0

次のいずれかの方法で設定します。

簡単な解決策:あなたは、post/models.py

class Comment(models.Model): 
    title = models.CharField(max_length=128, blank=True, default='') 
    ... 

common/models.py

post 
    models.py 
review 
    models.py 
common 
    models.py 

、あなたはコメントを定義します。

ディレクトリ(アプリ)構造を必要なときに使用します必要に応じてこのクラスを参照してください:

from common.models import Comment 

class Post(models.Model): 
    comment = models.ForeignKey(Comment, related_name='comments') 
    ... 

一般的な解決策:ミックスイン

別のオプションは、あなたの一般的なアプリの内部ミックスイン行動を作成することです。

class Commentable(models.Model): 
    comment = models.ForeignKey(Comment, related_name='comments') 

そして、この動作を継承して組み合わせます。

from common.models import Commentable 

class Post(Commentable, models.Model): 
    ... 

ミックスインについて少し読んでから使用してください。

関連する問題