我不知道我是否正确地表达了这个问题。如果我应该将其称为其他名称,请随时发表评论。
但这是我想要完成的,一些模型的层次结构如下:
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
其他一些属性:
- 子页面包含页面拥有的所有相同信息
- 所有指向 Page 的外键和 m2m 字段也适用于 SubPage
- 我希望能够快速访问父子页面和根页面而没有太多的数据库命中
那么坚持 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
对象,我想将它们分开。
感谢您的帮助,谢谢