1

独自のユーザー モデルとユーザー マネージャー モデルを作成しました。次に、スーパーユーザーを作成しようとすると、「スーパーユーザーが正常に作成されました」というメッセージが表示されました。しかし、すべての情報でログインしようとすると失敗しました。次に、作成中にパスワードを出力するコード行を追加しました。結果はパスワードと一致します。次の理由により、サーバーがカスタム モデルを使用していると確信しています。

  1. 私のコードに応じて必須フィールドが変わります
  2. 必須フィールドから必須フィールドを 1 つ削除すると、TypeError: create_superuser() missing 1 required positional argument:想定どおりの " " に関するエラーが発生するので、正しい方法で
  3. .count() メソッドを使用してデータベース内のユーザーを取得しました。ユーザーを作成した後、金額が 1 増加することがわかります

これが私のコードです:

class UserManager(BaseUserManager):
    def create_user(self, username,email,password=None):
        if not email:
            raise ValueError("Users must have an email address")
        if not password:
            raise ValueError("Users must have a password")
        user_obj = self.model(
            email=self.normalize_email(email)
        )
        user_obj.set_password(password)
        user_obj.username = username
        user_obj.save(using=self.db)
        return user_obj

    def create_superuser(self, username, email, password):
        print("Super user created, with password" + password)
        return self.create_user(
            username=username,
            email=email,
            password=password,
        )

class User(AbstractBaseUser):
    username = models.CharField(max_length=255, unique=True)
    email = models.EmailField(blank=True, unique=True)
    created_time = models.TimeField(auto_now=True)
    active = models.BooleanField(default=False)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username']
    objects = UserManager()

誰かが私に何か考えを与えることができれば、本当に感謝しています。完全に迷子になる。

4

2 に答える 2