我正在尝试创建一个 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)