将 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,减少一些重复的代码。从你的例子听起来 Group
和 GroupUser
是完全不同的两个东西,很可能它们也没有很多共同的属性,所以除非我误解你的意图,否则 OneToOneField 是更好的选择。
本题的构建: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,减少一些重复的代码。从你的例子听起来 Group
和 GroupUser
是完全不同的两个东西,很可能它们也没有很多共同的属性,所以除非我误解你的意图,否则 OneToOneField 是更好的选择。