ValueError: Поле 'id' ожидало число, но получило 'demo@gmail.com'

Я пытаюсь создать модель User, чтобы пользователи могли регистрироваться по адресу электронной почты, а не по имени пользователя. Я получаю ValueError: Field 'id' expected a number but got 'demo@gmail.com'., когда пытаюсь создать суперпользователя, у них не было проблем в makemigrations и migrate

также пытаюсь удалить pycache и все старые миграции и файл db, но все равно то же самое. вывод консоли также в конце вот Модели

Модель пользователя

class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(_("email address"), unique=True)
    first_name = models.CharField(_("first name"), max_length=10, blank=True)
    last_name = models.CharField(_("last name"), max_length=10, blank=True)
    date_joined = models.DateTimeField(_("date joined"), auto_now_add=True)
    is_active = models.BooleanField(_("is active"), default=True)

    # User Manager here
    objects = UserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []
    class Meta:
        verbose_name = _('user')
        verbose_name_plural = _('users')
    
    def get_full_name(self):
        full_name = self.first_name + " " + self.last_name
        return full_name.strip()

User Manager

class UserManager(BaseUserManager):
    use_in_migrations = True

    def _create_user(self,email,password, **extra_fields):
        """
        Create and save user
        """
        if not email:
            raise ValueError("Email is not available")
        email = self.normalize_email(email)
        user = self.model(email, **extra_fields)
        user.set_password(password)
        user.save(using=self._db)
        return user
    
    def create_user(self,email, password=None, **extra_fields):
        """
        Create a user
        """
        extra_fields.setdefault('is_superuser', False)
        return self._create_user(email, password, **extra_fields)
    
    def create_superuser(self,email, password, **extra_fields):
        """
        Create super user 
        """
        extra_fields.setdefault('is_superuser', True)

        if extra_fields.get("is_superuser") is not True:
            raise ValueError("Superuser must have is_superuser=True")

        return self._create_user(email, password, **extra_fields)

colsone

В вашей _create_user функции UserManager

user = self.model(email, **extra_fields)

должно быть

user = self.model(email=email, **extra_fields)
Вернуться на верх