我需要使用一些额外的字段扩展django用户。我找到了两种不同的方式
class UserProfile(models.Model):
user = models.OneToOneField(User)
#other fields
OR
class UserProfile(models.Model):
user = models.ForeignKey(User)
#other fields
它们不一样吗?在同步它们之后,我发现mysql数据库没有区别
答案 0 :(得分:5)
不,你为什么这么想? ForeignKey是一对多关系 - 即用户可以拥有许多配置文件。顾名思义,OneToOne是一对一的关系 - 用户只能拥有一个配置文件,这听起来更有可能。
答案 1 :(得分:4)
正如@Daniel Roseman所说,这是两种不同类型的rdbms关系。
你会发现它在你将拥有的情况(可能是错误的)中有所区别
给定用户的多个配置文件。在那种情况下,myuser.get_profile()
将会提升
一个MultipleObjectsReturned
例外,因为它本身就是在get()
查询。