Django中扩展User模型

官方其实是有资料的,不过在这里还是写的浅显点。

官方地址https://docs.djangoproject.com/en/dev/topics/auth/customizing/


在实际开发过程中,django提供的user字段肯定是不够用的,比如用户积分啊,描述啊,头像呀。。。这时候就需要扩展auth.User模型。


扩展User有2种方式。1种是建1个新的模型,然后User做为外键导入。


以下用pycharm来演示


建立工程


建立好以后进入命令行模式


执行命令(因为我用的是virtualenv虚拟环境,因此有前面的一段进入虚拟环境的过程,否则直接执行红框内的命令就ok)



设置数据库



接下来演示第一种模式

扩展User

配置好以后,设置模型



代码:

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django有一个内置的User模型,但是如果需要添加一些额外的字段或方法,可以通过扩展User模型来实现。 方法1:使用AbstractBaseUser和BaseUserManager 可以通过继承AbstractBaseUser和BaseUserManager来创建自定义User模型,具体步骤如下: 1. 创建一个新的app ``` python manage.py startapp accounts ``` 2. 在models.py创建自定义User模型 ```python from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin from django.db import models class CustomUserManager(BaseUserManager): def create_user(self, email, password=None, **extra_fields): if not email: raise ValueError('The Email field must be set') email = self.normalize_email(email) user = self.model(email=email, **extra_fields) user.set_password(password) user.save() return user def create_superuser(self, email, password=None, **extra_fields): extra_fields.setdefault('is_staff', True) extra_fields.setdefault('is_superuser', True) return self.create_user(email, password, **extra_fields) class CustomUser(AbstractBaseUser, PermissionsMixin): email = models.EmailField(unique=True) name = models.CharField(max_length=30, blank=True) is_staff = models.BooleanField(default=False) is_active = models.BooleanField(default=True) date_joined = models.DateTimeField(auto_now_add=True) objects = CustomUserManager() USERNAME_FIELD = 'email' REQUIRED_FIELDS = [] def __str__(self): return self.email def get_full_name(self): return self.name def get_short_name(self): return self.name ``` 3. 修改setting.py的AUTH_USER_MODEL ```python AUTH_USER_MODEL = 'accounts.CustomUser' ``` 4. 执行数据库迁移 ``` python manage.py makemigrations python manage.py migrate ``` 5. 创建超级用户 ``` python manage.py createsuperuser ``` 方法2:使用AbstractUser Django还提供了一个AbstractUser模型,可以通过继承该模型扩展User模型。 具体步骤如下: 1. 创建一个新的app ``` python manage.py startapp accounts ``` 2. 在models.py创建自定义User模型 ```python from django.contrib.auth.models import AbstractUser class CustomUser(AbstractUser): name = models.CharField(max_length=30, blank=True) ``` 3. 修改setting.py的AUTH_USER_MODEL ```python AUTH_USER_MODEL = 'accounts.CustomUser' ``` 4. 执行数据库迁移 ``` python manage.py makemigrations python manage.py migrate ``` 5. 创建超级用户 ``` python manage.py createsuperuser ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值