一对一和外键关系之间的差异?

eik*_*ega 2 django django-models

有人可以解释将Django模型中的关系指定为一对一而不仅仅是外键的重要性吗?

具体来说,我想知道如果有的话,将关系指定为1-1会有什么好处.

非常感谢.

Pra*_*kar 7

OneToOneField"ForeignKey的"后Django的演变.从概念上讲ForeignKey,unique=True约束与类似OneToOneField.

因此,如果您想确保每张图片都有一个用户,反之亦然OneToOneField.

如果您希望一个用户拥有任意数量的图片,请使用ForeignKey.

选择的方式也不同.如果这样做OneToOneField,你可以做user.picture并直接获取图片.如果ForeignKeyuser.picture_set[0]要获取第一张照片或访问与该用户相关的所有照片.

MultiTableInheritance在内部隐式使用OneToOneField,您可以看到概念的来源.