外星钥匙vs同一个场地djang

2024-06-26 04:43:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要用一些额外的字段扩展django用户。我在那里找到了两种不同的方法

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    #other fields

或者

class UserProfile(models.Model):
    user = models.ForeignKey(User)
    #other fields

他们不一样吗?同步后,我发现mysql数据库没有什么不同


Tags: django方法用户数据库fieldsmodelmodelsmysql
2条回答

正如@Daniel Roseman所说,这是两种不同类型的rdbms关系。

你会发现它在你将拥有的情况下是有区别的(可能是错误的) 给定用户的多个配置文件。在这种情况下myuser.get_profile()将提高 一个MultipleObjectsReturned异常,因为它实际上是在引擎盖下执行一个^{}查询。

不,你为什么这么想?外键是一对多关系(即用户可以有多个配置文件)。顾名思义,one to one是一对一的关系——用户只能有一个配置文件,这听起来更像。

相关问题 更多 >