构建此问题: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....
我认为这应该更快,不是吗?
有可能吗?
答案 0 :(得分:1)
它不会更快,因为你的父类对象在数据库中仍然有一个链接到子类的字段,如果你正在使用具体的继承(并且听起来像它),所以从技术上讲,效率是与OneToOne字段相同。
选择也基于业务逻辑。继承用于具有类似类型的事物的情况,以便您可以在父类中定义公共字段/方法并减少一些重复代码。从你的例子来看,Group
和GroupUser
之类的声音完全是两个不同的东西,很可能它们也没有共享许多共同的属性,所以除非我误解你的意图,否则OneToOneField是一个更好的候选者。