Chr*_*ris 16 django django-users
要使用自定义字段扩展User对象,Django文档建议使用UserProfiles.但是,根据这个问题回答一年左右的问题:
扩展django.contrib.auth.models.User现在也更好 - 自从Django的继承代码重构在模型API中以来.
和诸如物品此布局如何与优点延伸,以与自定义字段的用户模型,一起(,而不是通过.get_profile直接从用户对象检索属性()).
所以我想知道在这个问题上是否有任何共识,或者使用其中一个的原因.甚至Django团队目前的想法是什么?
我投票使用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()
如果您通过Article实例访问用户字段会发生什么?这将引发异常:
u = a_article.user
u.timezone
AttributeError: 'User' object has no attribute 'timezone'
也许这对你来说不是问题,你不想避免额外的数据库查询.但我会使用get_profile方式.
更新于2013年5月
从Django 1.5开始,您可以扩展默认的User模型,或者使用完全自定义的模型替换.
更新2016年11月
以上解决方案已过时,请参阅wim的评论
| 归档时间: | 
 | 
| 查看次数: | 11047 次 | 
| 最近记录: |