質問を正しく表現したかどうかはわかりません。他の名前で呼べばよかったのなら、遠慮なくコメントしてください。
しかし、これは私が達成しようとしていることであり、次のようなモデルの階層構造です。
Page <--- SubPage.1 <--- SubPage.1.1 <--- SubPage.1.1.1 ...
|__________| ^ ...and so on
| |-- SubPage.1.1.2 ...
|
tags #m2m or some other object
#with foreign key relation
その他の属性:
- サブページは、ページが持っているのと同じ情報をすべて保持します
- ページを指すすべての外部キーとm2mフィールドは、サブページにも適用されます
- dbヒットが多すぎずに、親サブページとルートページにすばやくアクセスできるようにしたい
では、DRYの哲学を守るための最善の方法は何でしょうか。
これは私が持っているものです:
class Page(models.Model):
....
class SubPage(Page):
parent = models.ForeignKey('self', related_name = 'subpage_set', blank = 'True')
root = models.ForeignKey(Page, related_name = 'rootpage_set')
いくつかの理由で、私はそれを行うこの方法が好きではありません。1)SubPage.rootは反復的であり、すぐに見つけることができますPage
。2)オブジェクトを保存すると、SubPage
オブジェクトも保存Page
されるので、別々に保持したいと思います。
私は助けに感謝します、ありがとう