更改密码时,django用户模型的继承会导致错误

时间:2010-06-01 19:27:00

标签: django

我继承了django用户模型,如下所示:

from django.db import models
from django.contrib.auth.models import User, UserManager
from django.utils.translation import ugettext_lazy as _

class NewUserModel(User):
    custom_field_1 = models.CharField(_('custom field 1'), max_length=250, null=True, blank=True)
    custom_field_2 = models.CharField(_('custom field 2'), max_length=250, null=True, blank=True)

    objects = UserManager()

当我去管理员并在此模型中添加一个条目时,它保存得很好,但在“密码”字段下面有“使用'[algo] $ [salt] $ [hexdigest]'或使用更改密码表单。“,如果我点击”更改密码表单“链接,则会产生此错误

Truncated incorrect DOUBLE value: '7/password'

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:1)

扩展Django用户模型的最佳方法是创建一个新的Profile模型并通过AUTH_PROFILE_MODULE设置识别它。请参阅http://www.b-list.org/weblog/2006/jun/06/django-tips-extending-user-model/http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

这为User实例添加了get_profile()方法,用于检索给定用户的关联模型。

答案 1 :(得分:0)

虽然可行(我曾经做过一次但后悔)使用继承来扩展用户模型并不是最好的主意。我建议你采用Chris的建议并以1-1关系扩展用户模型,因为它是“标准”和“支持”的方式,以及可重用应用程序处理用户配置文件的方式。否则,如果要通过继承来实现,则需要实现身份验证后端。所以如果你必须这样做,请看this。但要注意,你以后会遇到其他问题。