在 Django 中使用自定义字段扩展用户模型
Posted
技术标签:
【中文标题】在 Django 中使用自定义字段扩展用户模型【英文标题】:Extending the User model with custom fields in Django 【发布时间】:2011-02-22 15:50:06 【问题描述】:我正在尝试扩展用户模型,以便我可以添加自己的自定义字段,但我不断收到错误说明:
“NoneType”对象没有属性“_default_manager”
每当我尝试使用时
user.get_profile()
向自定义字段添加值,即每当我像这样使用它时:
user = User.objects.create_user(用户名、电子邮件、密码)
user.first_name = fname
user.last_name = lname
user.save()
uinfo = user.get_profile()
uinfo.timezone = "亚洲/浦那"
uinfo.save()
我已经按照在 Extending the User model with custom fields in Django 没有运气。
【问题讨论】:
【参考方案1】:首先:您确定在 settings.py 文件中输入了正确的 AUTH_PROFILE_MODULE 值吗?因为如果没有此用户的 UserProfile,异常应该看起来不同。 (不存在)
Anyway:当时没有 UserProfile 对象,因为它不是自动生成的。所以 get_profile() 在你的情况下会引发一个异常。
要么这样做:
if not UserProfile.objects.filter(user=user):
p = UserProfile(user=user)
p.save()
uinfo = user.get_profile()
...
或按照http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users 中(松散地)描述的那样创建一个信号
【讨论】:
以上是关于在 Django 中使用自定义字段扩展用户模型的主要内容,如果未能解决你的问题,请参考以下文章
在 Django 1.5 自定义用户模型中使用电子邮件作为用户名字段导致 FieldError
在 Django 中扩展用户对象:用户模型继承还是使用 UserProfile?
如何在 DRF + django-rest-auth 中使用自定义用户模型保存注册时的额外字段