我按照dev doc中的描述扩展了django用户模型.我不想保留大部分原始用户模型功能,因此我扩展了AbstractUser类.我在settings.py中定义了:
AUTH_USER_MODEL = 'myapp.CustomUser'
Run Code Online (Sandbox Code Playgroud)
我的用户类:
class CustomUser(AbstractUser):
custom_field = models.ForeignKey('OtherModel')
objects = UserManager()
Run Code Online (Sandbox Code Playgroud)
一切似乎工作正常,但当我尝试由管理网站管理:
admin.site.register(CustomUser, UserAdmin)
Run Code Online (Sandbox Code Playgroud)
我在管理员CustomUser创建页面上获得此错误(在验证密码确认表单后):
AttributeError: Manager isn't available; User has been swapped for 'myapp.CustomUser'
Run Code Online (Sandbox Code Playgroud)
关键是我需要管理站点管理的这个模型,以便拥有与原始用户模型相同的创建过程(使用密码验证的两步过程).