1 创建基础模型

  在本项目中,所有表都有两个自动产生的完全相同的字段,即创建时间和更新时间,因此,可以创建一个基础模型,让所有的表都来继承这个模型。

  找到工程目录下的PublicMethod目录,创建一个名为:BaseModel.py的文件,内容如下:

from django.db import models

class BaseModel(models.Model):
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间', help_text='创建时间')
    update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间', help_text='更新时间')

    class Meta:
        # 说明这个类是一个抽象模型类,在迁移的时候不会生成表
        abstract = True

2 创建Django授权用户表

  Django本身包含一个用户表,我们需要在该表中增加一些字段。找到OrgsAndUsers目录下的models.py文件,内容如下:

from django.db import models
from django.contrib.auth.models import AbstractUser

from PublicMethod.BaseModel import BaseModel

class UserInfo(AbstractUser, BaseModel):
    nickname = models.CharField(max_length=200, verbose_name='用户昵称', null=True, blank=True, help_text='用户昵称')
    openid = models.CharField(max_length=100, verbose_name='OpenID', null=True, blank=True, help_text='OpenID')
    mobile = models.CharField(max_length=20, verbose_name='手机号', help_text='手机号')  # 手机是整个平台的通行证
    identity = models.CharField(max_length=30, verbose_name='身份证号', default='', help_text='身份证号')
    weixin = models.CharField(max_length=50, verbose_name='微信号', null=True, blank=True, help_text='微信号')
    sexchoice = (
        (1, '男'),
        (2, '女'),
    )
    sex = models.IntegerField(choices=sexchoice, verbose_name='性别', null=True, blank=True, help_text='性别')
    province = models.CharField(max_length=30, verbose_name='省', null=True, blank=True, help_text='省')
    language = models.CharField(max_length=100, verbose_name='语言', null=True, blank=True, help_text='语言')
    city = models.CharField(max_length=30, verbose_name='市', null=True, blank=True, help_text='市')
    country = models.CharField(max_length=30, verbose_name='县(县级市)', null=True, blank=True, help_text='县(县级市)')
    headimgurl = models.CharField(max_length=300, verbose_name='头像路径', null=True, blank=True, help_text='头像路径')
    unionid = models.CharField(max_length=100, verbose_name='unionid', null=True, blank=True, help_text='unionid')
    subscribe_scene = models.CharField(max_length=50, verbose_name='用户关注的渠道来源', null=True, blank=True,
                                       help_text='用户关注的渠道来源')

    class Meta:
        db_table = 'UserInfo'
        verbose_name_plural = '001  用户信息表'

3 在settings.py文件中指定Django认证系统所使用的模型类,在最后面增加以下代码

# 指定Django认证系统所使用的模型类
AUTH_USER_MODEL = 'OrgsAndUsers.UserInfo'

4 执行数据迁移

  在PyCharm的Terminal下执行以下两个命令,创建数据表。

(venv) D:\DjangoDevelopment\yunsoft\projects\TongHeng2>python manage.py makemigrations
Migrations for 'OrgsAndUsers':
  Applications\OrgsAndUsers\migrations\0001_initial.py
    - Create model UserInfo

(venv) D:\DjangoDevelopment\yunsoft\projects\TongHeng2>python manage.py migrate
Operations to perform:
  Apply all migrations: OrgsAndUsers, admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0001_initial... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying OrgsAndUsers.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying sessions.0001_initial... OK

(venv) D:\DjangoDevelopment\yunsoft\projects\TongHeng2>

  5 在数据库中查看数据表

0004 继承django系统用户表的更多相关文章

  1. 第四百零六节,自定义用户表类来继承Django的用户表类,

    第四百零六节,自定义用户表类来继承Django的用户表类, models.py from django.db import models # Create your models here. from ...

  2. JEECG新建用户不用系统用户表的实现

    首先新增组织机构 和 角色: -- 新增 组织机构 INSERT INTO `t_s_depart` VALUES ('dept001', '你所在的机构', '你所在的机构的描述', null, ' ...

  3. django 自定义用户表替换系统默认表

    首先新建一个users应用,编写这个应用的models类. from django.contrib.auth.models import AbstractUser class UserProfile( ...

  4. django之用户表的继承

    有这样一个场景,之前已经设计好了用户的信息表,但是再设计另外一个业务表的时候,信息有点重复,如何重新设计呢? 可以采用表的继承,让一个表作为基类,业务表就可以继承它 要注意以下几点 1 作为基类的表使 ...

  5. django自定义用户表

    django中已经给我生成默认的User表,其中的字段已经可以满足我们的日常需求. 但有时候,我们需要更多的字段,我们就可以自定义.来替换django自带的User表. #models.py from ...

  6. 使用django的用户表进行登录管理

    改写用户基本表 ... AUTH_USER_MODEL = 'appjwt.User' ... setting.py from django.db import models from django. ...

  7. sqlserver 获取系统用户表结构信息

    SELECT (case when a.colorder=1 then d.name else null end) 表名, a.colorder 字段序号,a.name 字段名, (case when ...

  8. 即时聊天IM之二 openfire 整合现有系统用户

    合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com  综述: ...

  9. Django Authentication 用户认证系统

    一. Django的认证系统 Django自带一个用户认证系统,用于处理用户账户.群组.许可和基于cookie的用户会话. 1.1 概览 Django的认证系统包含了身份验证和权限管理两部分.简单地说 ...

随机推荐

  1. 菜鸟linux

    //查看系统中文件的使用情况 df -h //查看当前目录下各个文件及目录占用空间大小 du -sh *//查看当期端口使用情况netstat -tlpn //find命令详见--https://ww ...

  2. 一个C语言程序是由( )组成?

    A) 一个主程序和若干子程序组成 B)一个或多个函数组成 C) 若干过程组成 D) 若干子程序组成 正确答案 B 解析 [解析] 一个C源程序是由一个main函数和若干个其他函数组成的.函数是C程序的 ...

  3. 185.nvm和node.js环境配置

    安装nvm nvm(Node Version Manager)是一个用来管理node版本的工具,我们之所以使用node,是因为我们需要使用node中的npm(Node Package Manager) ...

  4. 文件下载(download) 前后台备注自用

    1.后台 1.1 ResponseBean 返回封装的格式 @Data @Accessors(chain = true) public class ResponseBean { private Str ...

  5. docker配置搭建gogs

    参考文献: https://www.yeboyzq.com/linux/ruanjiananzhuangweihu/1012.html https://www.jianshu.com/p/d92fd4 ...

  6. 在 Node 中使用 formidable 处理文件上传

    具体使用方式参照官方文档:https://www.npmjs.com/package/formidable 第一:安装: # npm install --save formidable yarn ad ...

  7. mnist识别优化——使用新的fashion mnist进行模型训练

    今天通过论坛偶然知道,在mnist之后,还出现了一个旨在代替经典mnist数据集的Fashion MNIST,同mnist一样,它也是被用作深度学习程序的“hello world”,而且也是由70k张 ...

  8. Java设计模式(一)UML总结

    定义 统一建模语言(英语: Unified Modeling Language ,缩写UML)是非专利的第三代建模和规约语言. UML特点 UML是一种开放的方法 用于说明.可视化.构建和编写一个正在 ...

  9. .net 基础汇总(1)

    1  转载 String.IsNullOrWhiteSpace和String.IsNullOrEmpty的区别

  10. python multiprocessing 耗内存问题

    multiprocessing在每创建一个进程时,会将主进程的内存空间原封不动的复制一份到子进程,这样一来内存消耗很容易就翻几倍,导致程序无法运行. 究其原因,是启动进程时采用了os.fork(),使 ...