上一篇:测试平台开发:(5)Django模型,以MySQL为例(中)_sinat_23377479的博客-CSDN博客
根据上一篇的操作,将Django内置的表成功迁移到了数据库。我们实现注册功能所需要的用户名和密码字段在内置的user表都有了。但是在实际工作中,用户还有很多属性,下面的操作就是继承Django的AbstractUser类,再自定义一些字段。
通过本系列文章的第2篇,我们通过命令django-admin startproject group,创建了group应用(此处踩了坑,创建的应用group里面还有一个group的文件,这里要仔细,可以直接把里面的group文件包拖到根目录下,删掉另一个group文件夹,不然迁移会失败)
1)在group文件夹下新增models.py,输入下面的代码
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
class users(AbstractUser): # 继承Django内置的用户类,可自定义字段
# 邮件字段暂未用到,可设置为非必填
email = models.EmailField('邮箱', max_length=100, default='')
create_time = models.DateTimeField('创建时间', auto_now=True)
last_login = models.DateTimeField('最后一次登录', auto_now=True)
2)在group文件夹下新增apps.py,输入以下代码
from django.apps import AppConfig
class GroupConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'group'
3)在项目根目录的settings.py增加配置:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'group', # 这里加上应用
]
AUTH_USER_MODEL = 'group.users' # 增加这条
如果迁移失败,可以对照上图项目结构,看是否一致。
4)打开终端,输入命令
python3 manage.py makemigrations group
如果没有报错且生成了迁移文件,则继续输入命令
python3 manage.py migrate
看到下图输出则表示迁移成功
查看数据库,可以看到刚迁移过去的users表
可能遇到的问题,迁移时报错:
raise InconsistentMigrationHistory(
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency group.0001_initial on database 'default'.
遇到这种情况,可以先把之前迁移过去的表全部删除,再执行一遍迁移命令即可。



