ForeignKey vs OneToOne字段django

sum*_*mit 6 python django django-models

我需要用一些额外的字段扩展django用户.我找到了两种不同的方式

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    #other fields
Run Code Online (Sandbox Code Playgroud)

要么

class UserProfile(models.Model):
    user = models.ForeignKey(User)
    #other fields
Run Code Online (Sandbox Code Playgroud)

他们不一样吗?在同步它们之后,我发现mysql数据库没有区别

Dan*_*man 5

不,你为什么这么想?ForeignKey是一对多关系 - 即用户可以拥有许多配置文件.顾名思义,OneToOne是一对一的关系 - 用户只能拥有一个配置文件,这听起来更有可能.

  • 数据库*中唯一的区别是对列的唯一约束与一对一.实际上,`OneToOneField`只是`ForeignKey(unique = True)`. (8认同)