繁体   English   中英

Django错误:“管理器”对象上的AttributeError没有属性“ create_user”

[英]Django error: AttributeError at 'Manager' object has no attribute 'create_user'

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

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

class appUser(user):
    objects = UserManager()

文档

在非抽象基类上定义的管理器不会由子类继承。 如果要从非抽象基础上重用管理器,请在子类上明确地重新声明它。 这些类型的管理器可能非常特定于它们所定义的类,因此继承它们通常会导致意外的结果(尤其是默认管理器使用的结果)。 因此,它们不会传递给子类。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM