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 | 一次网卡故障处理

    问题 在centos7系统中,设置ifcfg-eth*文件时,总会纠结NAME和DEVICE到底写哪个或哪个真实生效.这里实例演示下 这是网卡ifcfg-eth4配置文件.没写DEVICE,用的NAM ...

  2. 整理了Linux常用命令变量

    查看信息命令 ls 查看当前目录下面的所有文件 -a 显示所有文件(包括隐藏文件) -l 显示所有文件(包括文件的详细信息) 格式: ls 参数 目录路径(绝对/相对) cd 切换目录 格式: cd ...

  3. PMP--1.2 PMBOK指南组成部分

    图1.2.5 ​ PMBOK指南关键组成部分在项目中的相互关系说明:项目生命周期中包含项目阶段,项目阶段结束之后就是阶段关口: 而项目管理过程和项目管理过程组以及项目管理知识领域都是为了项目生命周期服 ...

  4. OptaPlanner 7.32.0.Final版本彩蛋 - SolverManager之异步求解

    因为工作和其它原因,很长一段时间没有出新的.关于OptaPlanner的文章了,但工余时间并没有停止对该引擎的学习.与此同时Geoffrey大神带领的KIE项目团队并没有闲下来,尽管在工业可用性.易用 ...

  5. 有关css编写文字动态下划线

    <div class="main_text">哈哈这就是我的小视频</div> 上面为html代码 接下来进行css的编写 .main_text{ posi ...

  6. H5网页布局+css代码美化

    HTML5的结构化标签,对搜索引擎更友好 li 标签对不利于搜索引擎的收录,尽量少用 banner图片一般拥有版权,不需要搜索引擎收录,因此可以使用ul + li <samp></s ...

  7. 洛谷P1880 [NOI1995]石子合并 纪中21日c组T4 2119. 【2016-12-30普及组模拟】环状石子归并

    洛谷P1880 石子合并 纪中2119. 环状石子归并 洛谷传送门 题目描述1 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石 ...

  8. 修改Linux中ssh协议中的默认端口号22

    说明:最近的一台服务器老是提示异常登录.主要原因是你的账户和密码可能太简单了,别人用默认的端口22进行登录. 打开SSH端口所在文件 vim /etc/ssh/sshd_config 进入编辑模式,将 ...

  9. C#实例之简单聊天室(状态管理)

    前言        状态管理是在同一页或不同页的多个请求发生时,维护状态和页信息的过程.因为Web应用程序的通信协议使用了无状态的HTTP协议,所以当客户端请求页面时,ASP.NET服务器端都会重新生 ...

  10. js替换时,空格被替换为双引号

    替换代码 str.replace(/\"/g, "'") 将双引号替换为单引号,如果字符串中,存在space(空格)时,使用以上语句将会导致空格被替换为双引号,可以使用如 ...