3

如何删除用户模型中的用户表和用户类的密码?从定制的Django用户模型中删除密码

我正在使用django-rest-framework令牌认证,所以我不需要密码字段。

这里是我的模型:

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 = [] 
+1

你是__sure__你根本不需要密码吗?比如说,有权访问管理员的root权限? –

+0

是的,我确定,我不希望管理员访问。 –

回答

5

移除密码字段另一种方法是使用set_unusable_password,这标志着用户为无密码组。

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

正如它在文档中所说的那样..“如果您的应用程序的身份验证是针对现有的外部源(例如LDAP目录)进行的,您可能需要此选项。” – Sayse

2

只是覆盖密码属性:

password = None 
+0

即使在迁移后也不能正常工作。 –