从自定义Django用户模型中删除密码

Ana*_*ees 4 python django django-models django-users django-rest-framework

如何在自定义用户模型中删除users表和User类中的密码?

我正在使用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 = []
Run Code Online (Sandbox Code Playgroud)

Ala*_*air 9

删除密码字段的替代方法是使用set_unusable_password,这标记用户没有设置密码.

def create_user(phone, name=None):
    user = User(name=name, phone=phone)
    user.set_unusable_password()
    user.save()
    return user
Run Code Online (Sandbox Code Playgroud)

  • 正如文档中所述......“如果您的应用程序的身份验证是针对现有的外部源(例如 LDAP 目录)进行的,那么您可能需要这个。” (2认同)

sea*_*ean 5

只需覆盖密码属性:

password = None
Run Code Online (Sandbox Code Playgroud)