Django错误:'经理'对象没有属性' create_user'

时间:2015-11-27 12:13:19

标签: python django

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方法时,会出现此异常。我做错了什么?

1 个答案:

答案 0 :(得分:4)

您的appUseruser的子类。如果user不是抽象基类,则appUser将不会继承管理器,您将需要重新声明它。

class appUser(user):
    objects = UserManager()

来自the docs

  

在非抽象基类上定义的管理器不会被子类继承。如果要从非抽象基础重用管理器,请在子类上显式重新声明它。这些类型的管理器可能对它们所定义的类非常具体,因此继承它们通常会导致意外结果(特别是对于默认管理器而言)。因此,它们不会传递给子类。

让您的appUser模型子类user很复杂,您可能会遇到其他困难。如果可能的话,我会避免它,或者至少使user抽象。