django之用户表的继承

有这样一个场景,之前已经设计好了用户的信息表,但是再设计另外一个业务表的时候,信息有点重复,如何重新设计呢?

可以采用表的继承,让一个表作为基类,业务表就可以继承它

要注意以下几点

1 作为基类的表使用 abstract=True
2 作为基类的表,不会生成相关的表
3 使用的时候导入 from rbac.models import UserInfo as RbacUserInfo
4 基类表里面有有关联表时,不能加引号

 

posted on 2018-11-26 22:46 dawn-liu 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/mmyy-blog/p/10023602.html

### 如何在 Django 中自定义创建用户 要在 Django 中自定义创建用户,可以通过继承 `AbstractUser` 或者更底层的 `AbstractBaseUser` 来完成。以下是具体方法: #### 使用 `AbstractUser` 创建自定义用户模型 通过继承 `AbstractUser` 类可以扩展默认的用户模型并添加额外字段。例如,在应用程序的 `models.py` 文件中编写如下代码[^1]: ```python from django.contrib.auth.models import AbstractUser from django.db import models class CustomUser(AbstractUser): # 自定义字段:bio 字段用于存储用户的简介信息 bio = models.TextField(blank=True, verbose_name="个人简介") def __str__(self): return self.username ``` 上述代码中的 `CustomUser` 继承了 `AbstractUser` 并新增了一个名为 `bio` 的字段。 #### 设置项目使用自定义用户模型 为了使 Django 使用新定义的用户模型,需修改项目的 `settings.py` 文件,并指定新的用户模型类路径[^2]: ```python AUTH_USER_MODEL = 'accounts.CustomUser' ``` 这里的 `'accounts.CustomUser'` 示 `CustomUser` 定义于 `accounts` 应用下的 `models.py` 文件中。 #### 数据库迁移 当定义好自定义用户模型后,执行数据库迁移命令以同步到数据库结构: ```bash python manage.py makemigrations python manage.py migrate ``` 这一步会将自定义用户模型保存至数据库中作为实际使用的用户。 #### 用户权限管理 如果需要进一步增强功能,比如增加特定业务逻辑或者角色权限控制,则可以在自定义用户模型上继续扩展。例如,添加一个用户职位的字段 `job_title`: ```python class CustomUser(AbstractUser): job_title = models.CharField(max_length=100, blank=True, null=True, verbose_name="职位") def __str__(self): return f"{self.first_name} {self.last_name}" ``` 以上展示了如何向用户模型加入更多属性以及调整其行为方式。 --- ### 注意事项 - **唯一性约束**:确保用户名或其他标识符具有唯一性。 - **数据一致性**:切换 AUTH_USER_MODEL 后应重新构建整个环境以免旧数据冲突。 - **测试充分**:更改用户模型可能影响现有代码,请全面验证改动后的系统运行状况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值