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. 纪中20日c组模拟赛

    赛后感想 多写点东西总是好的,但是在最后,算法就不要改动了(就这样我少了10分) 题解 T1 2121. 简单游戏 T2 2122. 幸运票

  2. KD-Tree 学习笔记

    这是一篇又长又烂的学习笔记,请做好及时退出的准备. KD-Tree 的复杂度大概是 \(O(n^{1-\frac{1}{k}})\) \(k\) 是维度 由于网上找不到靠谱的证明,咕了. 会证明之后再 ...

  3. 安装MySQL被提示缺少msvcr120.dll,msvcp120.dll或提示0xc00007b错误

    踩坑经历: 我的电脑昨天重装了win10系统,在安装MySQL时被提示缺少msvcr120.dll,我去下载msvcr120.dll后放入System32中,又被提示缺少msvcp120.dll,然后 ...

  4. linux安装docker和docker compose

    运行 sudo -s 切换到root用户. 1.卸载旧版本Docker(如果系统之前没安装过Docker,可以跳过): yum remove docker \ docker-client \ dock ...

  5. TCP 与 UDP 浅谈

    TCP与UDP区别总结:1.TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2.TCP提供可靠的服务.也就是说,通过TCP连接传送的数据,无差错,不丢失,不重 ...

  6. Truck History POJ - 1789 板子题

    #include<iostream> #include<cstring> #include<algorithm> #include<stdio.h> u ...

  7. FHQTreap刷题记录

    分裂:如图,按值分裂,u比k大则切黄色的一

  8. Docker最全教程——从理论到实战(十九)

    Python目前是流行度增长最快的主流编程语言,也是第二大最受开发者喜爱的语言(参考Stack Overflow 2019开发者调查报告发布).笔者建议.NET.Java开发人员可以将Python发展 ...

  9. Flutter简易顶部导航

    因为在AppBar的bottom参数中返回TabBar在平板模式的对齐模式是居中的且不可调整,所有将TabBar在title中返回 import 'package:flutter/material.d ...

  10. 浅谈C#委托的用法-delegate[转]

    一.委托的概念 委托和类一样是一种用户自定义类型,它存储的就是一系列具有相同签名和返回类型的方法的地址,调用委托的时候,它所包含的所有方法都会被执行. 借用百度上的一句话概括:委托是一个类,它定义了方 ...