使用Django中的自定义字段扩展用户模型

时间:2010-05-22 07:40:26

标签: django django-models

我正在尝试扩展User模型,以便我可以添加自己的自定义字段,但我一直收到错误说明:

  

'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 =“Asia / Pune”

     

uinfo.save()

我已经按照给出的步骤进行了操作 Extending the User model with custom fields in Django没有运气。

1 个答案:

答案 0 :(得分:2)

首先:你绝对确定你在settings.py文件中输入了AUTH_PROFILE_MODULE的正确值吗?因为如果此用户没有UserProfile,则异常应该看起来不同。 (DoesNotExist)

无论如何:当时没有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

中描述的(松散)信号