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
posted @ 2019-07-12 16:22  emos  阅读(2169)  评论(0编辑  收藏  举报