将模型与一对一关系连接起来的有效方法是什么?

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 进行连接)。

这里主要考虑的可能是语义。对我来说,说汽车有引擎更有意义,所以该字段将继续使用汽车模型。