0

我正在尝试创建一个 web3 用户可以使用他们的钱包登录但我希望超级用户仍然使用用户名/密码的应用程序。(我未来的计划是创建一个自定义后端来执行 web3 身份验证流程)

我很接近这一点,因为我能够创建第一个可以使用用户名/密码的管理员,但意识到它在下一个 createsuperuser 上失败了:

django.db.utils.IntegrityError: UNIQUE constraint failed: users_web3user.public_address

所以我现在尝试只是添加一个随机整数来满足它,只是为了看看它是否会起作用,但同样的问题不断出现。

这是否是解决这个问题并将我的用户与我的超级用户分开的正确方法?此外,即使我在 settings.py 中设置了user我的应用程序,我的调试器也不会被调用:AUTH_USER_MODEL = 'users.Web3User'

models.py: 类 Web3UserManager(BaseUserManager): def create_user(self, public_address): if not public_address: raise ValueError('Users must have a public_address')

        user = self.model(
            public_address=public_address,
            nonce=secrets.token_urlsafe(32)
        )

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

    def create_superuser(self, username, password=None):
        import ipdb; ipdb.sset_trace()
        public_address=secrets.randbelow(299)
        print(public_address)
        user = self.create_user(
            username=username,
            password=password,
            public_address=public_address
        )
        user.is_admin = True
        user.save(using=self._db)
        return user



class Web3User(AbstractUser):
    public_address = models.CharField(max_length=64, unique=True)
    nonce = models.CharField(max_length=64)
4

1 回答 1

-1
django_custom_user==0.7
AUTH_USER_MODEL = 'user.UserModel' -> settings.py

class UserModel(AbstractEmailUser, BaseModelFields):
   pass

使用包而不是做一些很酷的逻辑。

于 2021-10-12T21:32:51.127 回答