Anas Aldrees
Anas Aldrees

Reputation: 465

Remove password from custom Django User model

How to remove the password in the users table and User class in a custom user model?

I'm using django-rest-framework token authentication, so i don't need the password field.

Here is my model:

class CustomUserManager(BaseUserManager):

    def create_user(phone, name=None):
        return User.objects.create(
            name=name, phone=phone)

    def create_superuser(name, phone=None):
        pass

class User(AbstractBaseUser):
    """
    Custom django User model.
    """
    name = models.CharField(max_length=30,
                        null=True, validators=[validate_name])

    phone = PhoneNumberField(unique=True, blank=False, null=False)

    objects = CustomUserManager()

    USERNAME_FIELD = 'phone'
    REQUIRED_FIELDS = []

Upvotes: 14

Views: 8734

Answers (2)

Alasdair
Alasdair

Reputation: 309009

An alternative to removing the password field would be to use set_unusable_password, which marks the user as having no password set.

def create_user(phone, name=None):
    user = User(name=name, phone=phone)
    user.set_unusable_password()
    user.save()
    return user

Upvotes: 26

sean
sean

Reputation: 811

Just override the password attribute:

password = None

Upvotes: 10

Related Questions