要使用自定义字段扩展User对象,Django文档建议使用UserProfiles . 但是,根据this回答一年左右的问题回复:
扩展django.contrib.auth.models.User现在也运行得更好 - 自从Django的继承代码在模型API中重构以来 .
诸如this等文章阐述了如何使用自定义字段扩展User模型以及优势(直接从用户对象检索属性,而不是通过.get_profile()) .
所以我想知道在这个问题上是否有任何共识,或者使用其中一个的原因 . 甚至Django团队目前的想法是什么?
2 回答
我投票赞成使用 UserProfiles .
我使用了几个第三方应用程序 . 并且用户的外键始终指向auth.models.User .
Example:
和您的自定义用户模型:
如果您通过Article实例访问用户字段会发生什么?这将引发异常:
也许这对你来说不是问题,你不想避免额外的数据库查询 . 但我会使用get_profile方式 .
UPDATE May, 2013
从Django 1.5开始,您可以使用默认的用户模型,或使用完全自定义模型的substitute .
UPDATE Nov, 2016
以上解决方案已过时,请参阅wim的评论
这是James Bennett在_1371453中所说的内容:
因此,我认为最好的方法仍然是使用外部应用程序,例如Pinax的某些组件,或django-profiles应用程序(最初来自同一个James Bennett) .