2つの密接に関連した階層ベースのオブジェクト間の関係を定義する "適切な"方法についてはわかりません。密接に関連するオブジェクトのDjangoモデル継承
私はDjangoでフォーラムのようなフレームワークを開発しています。
私の最初のアイデアは、スレッドが基本的に「特別な」種類のPostであるため、完全に機能するPostモデルを作成してから、スレッドモデルを継承し、必要かもしれない。これと同じように:
class Post(models.Model):
forum = models.ForeignKey(Forum)
title = models.CharField(max_length=50, default="")
text = models.CharField(max_length=2000, default="")
created = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(User)
class Thread(Post):
thread_views = models.IntegerField()
reply_count = models.IntegerField()
(...)
私はまた、「isThread」ブールフィールドを持つ単一の「ポスト」モデルを作りについて考えたが、何かがそれについて権利を感じませんでした。
私は非常に関連性が高いと思われる例を見てきましたが、オブジェクトは別々のテーブルに格納されていると言いますが、この種のデザインには最良の選択肢かどうかはわかりません。
これを行うための「適切な」方法、パフォーマンス上のやり方、そして良い方法は何でしょうか?
実際に 'Post'オブジェクトをデータベースに保存するかどうかによって異なります。あなたが 'Posts'と' Threads'の両方を持っているなら、あなたは正しいことをしています。そうでない場合、将来的に他の種類の投稿があると思われる場合は、 'Post'を[抽象基本クラス]にすることもできます(https://docs.djangoproject.com/ja/1.11/topics/db/models /#abstract-base-classes)は、サブクラス化する必要があります。 'is_thread'のようなものを使うのは最適ではありません。これは、特定の' Thread'フィールドがオプションでなければならず、モデルの検証に頼るのではなくすべての検証を書く必要があるからです。 – dirkgroten