簡體   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