将 OneToOneField 转换为 MultipleTableInheritance

Convert OneToOneField to MultipleTableInheritance

本题的构建: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....

我认为应该更快,还是更快?

可能吗?

它不会更快,因为如果您使用的是具体继承(听起来像会),所以从技术上讲,效率与 OneToOne 字段相同。

选择也是基于业务逻辑。继承用于你有类似类型的东西的情况,这样你就可以在父class中定义commonfields/methods,减少一些重复的代码。从你的例子听起来 GroupGroupUser 是完全不同的两个东西,很可能它们也没有很多共同的属性,所以除非我误解你的意图,否则 OneToOneField 是更好的选择。