我继承了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'
我该怎么做才能解决这个问题?
答案 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。但要注意,你以后会遇到其他问题。