Django自定义用户模型错误:Manager isn't available; User has been swapped”?
我扩展了Django用户模型,如dev文档中所描述的那样。我不想保留大多数原始的用户模型特性,所以我扩展了抽象用户类。我在setings.py中定义了:
AUTH_USER_MODEL = 'user.User'
我的用户类:
class User(AbstractUser):
custom_field = models.ForeignKey('OtherModel')
objects = UserManager()
一切看起来都很好,但是当我试图让它由管理站点管理时:
admin.site.register(User, UserAdmin)
我在ADMIN CustomUser Creation页面(在验证密码确认表单后)获得此错误:
AttributeError: Manager isn't available; User has been swapped for 'user.User'
关键是,我需要管理站点管理这个模型,以便与原始用户模型具有相同的创建过程(两个步骤进程,密码验证)。
分析:因为我们定义抽象模型类,并且在settings中设置了
# django认证系统使用的模型类
AUTH_USER_MODEL='user.User'
解决方法(将views中导入模块的方式修改)
from django.contrib.auth.models import User
然后将其替换为:
from user.models import MyUser as User