我投票赞成使用UserProfiles。
我使用了几个第三方应用程序。并且用户的外键将始终指向 auth.models.User。
例子:
class Article(models.Model):
user = models.ForeignKey('auth.User') # instead of your CustomUser
text = ....
以及您的自定义用户模型:
class CustomUser(User):
timezone = models.CharField(max_length=50, default='Europe/London')
# Use UserManager to get the create_user method, etc.
objects = UserManager()
如果您通过文章实例访问用户字段会发生什么?这将引发异常:
u = a_article.user
u.timezone
AttributeError: 'User' object has no attribute 'timezone'
也许这对您来说不是问题,并且您不想避免额外的数据库查询。但我会使用 get_profile 方式。
2013 年 5 月更新
从 Django 1.5 开始,您可以扩展默认的用户模型,或者用完全定制的模型替代。
2016 年 11 月更新
上述解决方案已过时,请参阅 wim 的评论