将模型与一对一关系连接起来的有效方法是什么?
What is the efficient way to connect models with a one to one relation?
考虑这两个模型,
class Engine(models.Model):
name = models.CharField(max_length=25)
class Car(models.Model):
name = models.CharField(max_length=25)
两个模型可以用一个OneToOneField连接如下
class Engine(models.Model):
name = models.CharField(max_length=25)
car = models.OneToOneField(Car)
或
class Car(models.Model):
name = models.CharField(max_length=25)
engine = models.OneToOneField(Engine)
如果关系建立在一个模型上而不是另一个模型上,是否会有任何差异或会有什么差异。
从效率的角度来看完全没有区别;从一个到另一个总是需要额外的数据库查找(或者如果你使用 select_related
进行连接)。
这里主要考虑的可能是语义。对我来说,说汽车有引擎更有意义,所以该字段将继续使用汽车模型。
考虑这两个模型,
class Engine(models.Model):
name = models.CharField(max_length=25)
class Car(models.Model):
name = models.CharField(max_length=25)
两个模型可以用一个OneToOneField连接如下
class Engine(models.Model):
name = models.CharField(max_length=25)
car = models.OneToOneField(Car)
或
class Car(models.Model):
name = models.CharField(max_length=25)
engine = models.OneToOneField(Engine)
如果关系建立在一个模型上而不是另一个模型上,是否会有任何差异或会有什么差异。
从效率的角度来看完全没有区别;从一个到另一个总是需要额外的数据库查找(或者如果你使用 select_related
进行连接)。
这里主要考虑的可能是语义。对我来说,说汽车有引擎更有意义,所以该字段将继续使用汽车模型。