Django Пользовательская модель пользователя и SuperUser

Я пытаюсь создать приложение, в котором пользователь web3 может использовать свой кошелек для входа НО я хочу, чтобы суперпользователь все еще использовал имя пользователя/пароль (мой будущий план - создать пользовательский бэкэнд для выполнения web3 auth flow)

Я был близок к этому, так как смог создать первого администратора, который мог использовать имя пользователя/пароль, но понял, что при следующем createuperuser происходит сбой с этим:

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

Поэтому я попробовал пока просто добавить случайное целое число, чтобы удовлетворить это, просто чтобы посмотреть, будет ли это работать, но та же проблема постоянно появляется.

Будет ли это правильным способом сделать это и отделить моих пользователей от моих суперпользователей? Также, мой отладчик никогда не вызывается, хотя я установил в settings.py, где user - мое приложение: AUTH_USER_MODEL = 'users.Web3User'

models.py: class Web3UserManager(BaseUserManager): def create_user(self, public_address): if not public_address: raise ValueError('Пользователи должны иметь публичный_адрес')

        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)
django_custom_user==0.7
AUTH_USER_MODEL = 'user.UserModel' -> settings.py

class UserModel(AbstractEmailUser, BaseModelFields):
   pass

Используйте пакет вместо того, чтобы создавать крутую логику.

Вернуться на верх