شیرین
3 سال پیش توسط شیرین مطرح شد
0 پاسخ

خطا در migrateکردن مدل customser

سلام من برای اینکه از لاگین با تلفن همراه استفاده کنم به مدل customuser فیلد اضافه کردم و managerبراش ساختم الان خطای 1091به من میده
دوم اینکه من میخوام کاربر هم بتونه باusername,password وارد بشه هم با موبایل و رمز یکبار مصرف الان بااین مدل باید برای phone هم uniqe=trueبکنم ؟ اگر کد بهتر هست ممنون برام بزارید

class CustomUser(AbstractUser):
    username = models.CharField(max_length=50, verbose_name='نام', blank=True, null=True, unique=True)
    email = models.EmailField()
    age = models.PositiveIntegerField(null=True, blank=True)
    phone = models.BigIntegerField(verbose_name='موبایل', blank=True, null=True)
    address = models.CharField(max_length=300, null=True, blank=True)
    profile_image = models.ImageField(upload_to='profile/', null=True, blank=True)
    postal_code = models.CharField(max_length=20, null=True, blank=True)
    create = models.DateTimeField(auto_now_add=True, verbose_name='تاریخ', blank=True, null=True, )
    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['phone', 'email']
    objects = CustomUserManager()

    class Meta:
        verbose_name = "کاربر"
        verbose_name_plural = "کاربران"

    def __str__(self):
        return self.username

class CustomUserManager(BaseUserManager):
    def create_user(self, email, username, phone, password):
        if not email:
            raise ValueError('plz input email')
        if not username:
            raise ValueError('plz input username')
        if not phone:
            raise ValueError('plz input phone')
        user = self.model(email=self.normalize_email(email), username='username', phone='phone')
        user.set_password(password)
        user.save(using=self._db)
        return user

    def create_superuser(self, email, username, phone, password, **other_fields):
        # user = self.create_user(email, username, phone, password)
        other_fields.setdefault('is_staff', True)
        other_fields.setdefault('is_active', True)
        other_fields.setdefault('is_superuser', True)
        if other_fields.get('is_staff') is not True:
            raise ValueError('Superuser muse have is_staff=True')
        if other_fields.get('is_superuser') is not True:
            raise ValueError('Superuser muse have is_superuser=True')
        return self.create_user(email, username, phone, password, **other_fields)
MySQLdb.OperationalError: (1091, "Can't DROP 'is_staff'; check that column/key exists")