将OneToOneField转换为MultipleTableInheritance

时间:2015-09-24 12:33:37

标签: django django-models django-orm

构建此问​​题:Which is better: Foreign Keys or Model Inheritance?

我想知道是否可以用MTI替换OneToOne字段?

A.K。

我有:

class GroupUser(models.Model):
    group = models.OneToOneField(Group)
    ...other fields....

我希望:

class GroupUser(Group):
    ...other fields....

我认为这应该更快,不是吗?

有可能吗?

1 个答案:

答案 0 :(得分:1)

它不会更快,因为你的父类对象在数据库中仍然有一个链接到子类的字段,如果你正在使用具体的继承(并且听起来像它),所以从技术上讲,效率是与OneToOne字段相同。

选择也基于业务逻辑。继承用于具有类似类型的事物的情况,以便您可以在父类中定义公共字段/方法并减少一些重复代码。从你的例子来看,GroupGroupUser之类的声音完全是两个不同的东西,很可能它们也没有共享许多共同的属性,所以除非我误解你的意图,否则OneToOneField是一个更好的候选者。