I'm finding conflicting information on whether to use OneToOneField(User)
or ForeignKey(User, unique=True)
when creating a UserProfile
model by extending the Django User model.
Is it better to use this?:
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
or this?:
class UserProfile(models.Model):
user = models.OneToOneField(User)
The Django Doc specifies OneToOneField
, while the Django Book example uses ForeignKey
.
James Bennett also has two Blog posts that providing conflicting examples as well:
In the former post, Bennett provides some reasons why he switched to using ForeignKey
instead of OneToOneField
, but I don't quite get it, especially when I see other posts that recommend the opposite.
I'm curious to know your preference and why. Or, does it even matter?