繁体   English   中英

“超过最大递归深度”试图调用重载函数

[英]"maximum recursion depth exceeded" trying to call an overloaded function

我正在设置自定义用户身份验证,当我尝试在 powershell 中创建超级用户时,它给了我一个错误“[上一行重复了 986 次] RecursionError:最大递归深度超出”,这是指我的 create_superuser()

模型.py

def create_superuser(self, username, password=None):
    user = self.create_superuser(
        username,
        password = password,
        is_staff = True,
        is_admin = True

    )
    user.save(using=self._db)
    return user

看起来你想调用一个重载的函数。

在 Python 中,没有函数重载。 相反,函数可以有一个灵活的签名(可选参数,通过*args**kwargs接收任何参数)。 如果你在同一个作用域中定义了两个同名的函数,那么解释器稍后遇到的函数将简单地替换前者。

因此,您需要使用灵活的签名将两个功能合并为一个。 (没有什么能阻止你拆分辅助函数或任何隐藏的东西,但它们需要有不同的名称)。

创建超级用户是创建用户强制密码

class UserProfileManager(BaseUserManager):
    """ Manager para perfiles de usuario """
    def create_user(self, username, password=None):
        """ Crear Nuevo UserProfile """
        if not username:
            raise ValueError('username!!!')
        #email= self.normalize_email(email)
        user = self.model(username=uername)
        user.set_password(password)
        user.save(using=self._db)

        return user

    def create_superuser(self, username, password): 
        user = self.create_user(username=username, 
                            password = password,
                            is_staff=True,
                            is_admin = True)
        user.save(using=self._db)
        return user

暂无
暂无

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

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