Django模型继承与关系

Dan*_*l D 1 django inheritance foreign-key-relationship

我有一个django应用程序,我想在基础级别定义两个类之间的关系.定义这些基类的子项之间的关系对我来说也是有意义的 - 所以我得到这样的东西:

class BaseSummary(models.Model):
  base_types...

class BaseDetail(models.Model):
  base_detail_types...
  base_summary = models.ForeignKey('BaseSummary')

class ChildSummary(BaseSummary):
  child_summary_types...  

class ChildDetail(BaseDetail):
  child_detail_type...
  child_summary = models.ForeignKey('ChildSummary')
Run Code Online (Sandbox Code Playgroud)

django支持这个吗?如果它受支持,这样会导致可扩展性问题吗?

谢谢!

Mar*_*vin 5

是的,这是支持的.是的,它可能会导致性能问题.你应该阅读Jacob关于模型继承的帖子:http://jacobian.org/writing/concrete-inheritance/

从1.0开始,Django支持模型继承.这是一个简洁的功能,可以大大提高您的建模选项的灵活性.

然而,模型继承也提供了一个非常好的机会射击自己的脚:具体(多表)继承.如果您正在使用具体的继承,Django几乎在每个查询上都会创建隐式连接回父表.这可能会彻底破坏数据库的性能.