Django 用户User扩展

1、使用代理模型

仅仅是简单的增加操作方法或更改模型的查询管理方式时,就需要使用代理模型来扩展现有用户模型。


2、Profile 方式扩展:User扩展 :

可以使用 创建新models, ProFile(model.Model) 与User 建立OnetoOne(一对一关系);



更多信息:

如何扩展Django用户模块

http://python.jobbole.com/86806/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值