django更换用户表单
需要先把,所有模块中的migrations文件下,除了__init__.py之外的文件都清空掉,然后删除数据库中的所有表单,然后再按照上面的流程走一遍,这样就行了。首先在对应子模块的models.py中新增一个新用户表的模型 ,记得先继承AbstractUser。随后在settings.py中修改用户表配置,我这边子模块名称是study,可安装实际情况更换。如果系统已经生成过用户表,上门这种操作是
·
更换用户表单,建议在系统开发的初期就更换,不然更换时依赖问题会很严重。
具体操作:
首先在对应子模块的models.py中新增一个新用户表的模型 ,记得先继承AbstractUser
# Create your models here.
from django.db import models
from django.contrib.auth.models import AbstractUser,BaseUserManager
from django.conf import settings
class UserManager(BaseUserManager):
def create_user(self, username, email, password=None):
if username is None:
raise TypeError('用户应该有一个用户名')
if email is None:
raise TypeError('用户应该有一个电子邮件')
user = self.model(username=username, email=self.normalize_email(email))
user.set_password(password)
user.save()
return user
def create_superuser(self, username, email, password=None):
if password is None:
raise TypeError('密码不应该是None')
user = self.create_user(username, email, password)
user.is_superuser = True
user.is_staff = True
user.save()
return
#更新需要新增一个user表,不然以后更新的时候会出现问题
class Users(AbstractUser, models.Model):
IDENTITY_CHOICES = (
(0, "超级管理员"),
(1, "普通管理员"),
(2, "系统用户"),
)
username = models.CharField(max_length=50, unique=True, db_index=True, verbose_name='用户账号', help_text="用户账号")
email = models.EmailField(max_length=60, verbose_name="邮箱", null=True, blank=True, help_text="邮箱")
mobile = models.CharField(max_length=30,verbose_name="电话", null=True, blank=True, help_text="电话")
avatar = models.CharField(max_length=200,verbose_name="头像", null=True, blank=True, help_text="头像")
name = models.CharField(max_length=40, verbose_name="姓名", help_text="姓名")
nickname = models.CharField(max_length=100, help_text="用户昵称", verbose_name="用户昵称",default="")
address = models.CharField(max_length=100, help_text="地址", verbose_name="地址",default="")
identity = models.SmallIntegerField(choices=IDENTITY_CHOICES, verbose_name="身份标识", null=True, blank=True, default=2,help_text="身份标识")
is_delete = models.BooleanField(default=False, verbose_name="是否逻辑删除", help_text="是否逻辑删除")
update_datetime = models.DateTimeField(auto_now=True, null=True, blank=True, help_text="修改时间",
verbose_name="修改时间")
create_datetime = models.DateTimeField(auto_now_add=True, null=True, blank=True, help_text="创建时间",
verbose_name="创建时间")
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ["email"]
objects = UserManager()
class Meta:
db_table = "users"
verbose_name = '用户表'
verbose_name_plural = verbose_name
ordering = ('-create_datetime',)
随后在settings.py中修改用户表配置,我这边子模块名称是study,可安装实际情况更换
AUTH_USER_MODEL = 'study.Users' # 对应模块的模型名称
USERNAME_FIELD = 'username' #用户的登录名称
在settings.py中的INSTALLED_APPS加上子模块模块,我这边名叫study,

随后先运行
python manage.py makemigrations
生成迁移文件,有这个就成功了。

随后运行
python manage.py migrate
生成表单。

如果系统已经生成过用户表,上面这种操作是没法更换的,分享一下一劳永逸的办法。
需要先把所有模块中的migrations文件下,除了__init__.py之外的文件都清空掉,然后删除数据库中的所有表单,然后再按照上面的流程走一遍,这样就行了。所以建议在系统开发初期更换用户表。

更多推荐
所有评论(0)