models.py:
from django.contrib.auth.models import AbstractBaseUser
from django.contrib.auth.models import PermissionsMixin
from django.contrib.auth.models import BaseUserManager
class UserManager(BaseUserManager):
# code
def create_user(self, uid, pass):
# code
class user(AbstractBaseUser, PermissionsMixin):
# code
objects = UserManager()
# code
class appUser(user):
# code
views.py
from projectname.app.models import appUser
def index_view(request):
# code
appUser.objects.create_user(uid_variable, pass_variable)
# code
settings.py
#code
INSTALLED_APPS = (
#code
'projectname.app',
)
AUTH_USER_MODEL = 'app.appUser'
#code
当我尝试在视图中调用create-user方法时,会出现此异常。我做错了什么?
答案 0 :(得分:4)
您的appUser
是user
的子类。如果user
不是抽象基类,则appUser
将不会继承管理器,您将需要重新声明它。
class appUser(user):
objects = UserManager()
来自the docs:
在非抽象基类上定义的管理器不会被子类继承。如果要从非抽象基础重用管理器,请在子类上显式重新声明它。这些类型的管理器可能对它们所定义的类非常具体,因此继承它们通常会导致意外结果(特别是对于默认管理器而言)。因此,它们不会传递给子类。
让您的appUser
模型子类user
很复杂,您可能会遇到其他困难。如果可能的话,我会避免它,或者至少使user
抽象。