由于我需要的User模型与django自带的User有所不同,所以需要定义自己的User Model,这里记录一下方法,适用于django 1.5+。

因为使用自己的后台,放弃django的管理后台,所以无需在admin.py中注册。

定义MyUserManagerMyUser

修改myapp下的models.py文件:

from django.db import modelsfrom django.contrib.auth.models import (

BaseUserManager, AbstractBaseUser, PermissionsMixin)

class
MyUserManager(BaseUserManager):

def
_create_user(self, username, email, password, **extra_fields):

"""

Creates
and saves a User with the given username, email and password.

"""

ifnot
username:

raise
ValueError('The given username must be set')

email
= self.normalize_email(email)

user
= self.model(username=username, email=email, **extra_fields)

user.set_password(password)

user.save(using=self._db)

return
user

def
create_user(self, username, email, password, **extra_fields):

extra_fields.setdefault('is_staff',
False)

return
self._create_user(username, email, password, **extra_fields)

def
create_superuser(self, username, email, password, **extra_fields):

extra_fields.setdefault('is_staff',
True)

if
extra_fields.get('is_staff')
isnotTrue:

raise
ValueError('Superuser must have is_staff=True')

return
self._create_user(username, email, password, **extra_fields)

class
MyUser(AbstractBaseUser, PermissionsMixin):

username
= models.CharField(max_length=254,
unique=True,
db_index=True)

email
= models.EmailField('email address',
max_length=254)

is_staff
= models.BooleanField('staff status',
default=False)

is_active
= models.BooleanField('active',
default=True)

USERNAME_FIELD
= 'username'

REQUIRED_FIELDS
= ['email']

objects
= MyUserManager()

class
Meta:

db_table
= 'myuser'

def
get_full_name(self):

return
self.username

def
get_short_name(self):

return
self.username

这里的MyUserManager和django的UserManager大同小异,也可以直接继承UserManager,然后修改_create_user函数即可。

MyUser类即为我们自定义的User模型,我们可以根据需要添加各种属性。

修改settings.py

修改settings.py文件,添加如下内容设置认证使用的model:

AUTH_USER_MODEL
= 'myapp.MyUser'

更新数据库

首先删掉之前的数据库,然后重新建立,运行如下命令生成新的数据表:

$
python manage.py makemigrations myapp

$
python manage.py migrate

经过这三步,默认的User模型已经被替换成了我们自己定义的User模型了。当然我们也可以定义自己的认证模型以及权限系统,后面涉及到相关部分再添加笔记了。

如果要使用django管理后台可以参考以下方法:

https://blog.csdn.net/watsy/article/details/15506351

django mysql数据库使用自己的User的更多相关文章

  1. django mysql 数据库配置

    在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库. DATABASES = { 'default': { 'ENGINE': 'django.db. ...

  2. Django/MySql数据库基本操作&ORM操作

    数据库配置: #第一步在settings里面 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'dbna ...

  3. Django MySQL数据库操作

    上一篇文章写了一些基本的Django操作,下面重点介绍数据库的内容. 对象之间的关系: 一对一 一对多 多对多 1.一对多 先演示一对多的关系,多个blog对应一个名字, 修改blog/models. ...

  4. Django Mysql数据库-基于双下划线的跨表查询

    一.基于双下划线的跨表查询 Django 还提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系.要做跨关系查询,就使用两个下划线来链接模型(mode ...

  5. Django Mysql数据库-F查询和Q查询

    一.F查询和Q查询 F查询: 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的比较.F() 的 ...

  6. Django Mysql数据库-聚合查询与分组查询

    一.聚合查询与分组查询(很重要!!!) 聚合查询:aggregate(*args, **kwargs),只对一个组进行聚合 from django.db.models import Avg,Sum,C ...

  7. python——django使用mysql数据库(二)

    上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...

  8. python——django使用mysql数据库(一)

    之前已经写过如何创建一个django项目,现在我们已经有了一个小骷髅,要想这个web工程变成一个有血有肉的人,我们还需要做很多操作.现在就先来介绍如何在django中使用mysql数据库. 前提:已经 ...

  9. django中mysql数据库设置错误解决方法

    刚在django中settings.py进行设置mysql数据库. 当进行执行python manage.py shell命令时会报以下错误: 只需要在settings.py中 DATABASES = ...

随机推荐

  1. jvm的解释执行与编译执行

    1.原理 字节码无法直接交给硬件执行需要虚拟机翻译成机器码才能执行,“翻译”的策略有两种:解释执行和编译执行又称即使编译(JIT).解释执行是没执行一句字节码的时候把字节码翻译成机器码并执行,优点是启 ...

  2. mysql从5.5直接升级到5.7后,执行mysql_upgrade速度很慢且执行结束后数据目录大小增加一倍及 mysqlpump备份出现1577错误

    mysql官网不支持夸大版本升级,比如跳过5.6直接升级到5.7,但由于一些客观原因,项目需要从5.5直接升级到5.7,以下是具体操作 1.备份之前mysql,(数据量少,可直接拷贝安装目录及data ...

  3. 20175330 2018-2019-2 《Java程序设计》第八周学习总结

    # **教材学习内容总结### 本周学习<Java程序设计>第十五章:*** 泛型: 泛型(Generics)的主要目的是可以建立具有类型安全的集合框架,如链表.散列映射等数据结构.泛型类 ...

  4. nginx + tomcat = http && https

    Tomcat版块配置: vim /to/path/conf/server.xml <Server port="" shutdown="SHUTDOWN"& ...

  5. Bootstrap学习(一):Bootstrap简介

    一.Bootstrap简介 Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更 ...

  6. Elicpse使用技巧-打开选中文件文件夹或者包的当前目录

    很多时候,我们需要在eclipse那里打开选中文件(文件夹,包)的当前目录,在资源管理器那里显示这个目录,这个时候,我们又不想采用“选中文件/文件夹/包名--右击--Properties--Locat ...

  7. Java执行JavaScript脚本破解encodeInp()加密

    一:背景 在模拟登录某网站时遇到了用户名和密码被JS进行加密提交的问题,如图: 二:解决方法 1.我们首先需要获得该JS加密函数,一般如下: conwork.js var keyStr = " ...

  8. 1. FPGA内部的逻辑资源

    CLB(包括LUT.加法器.寄存器.MUX(多路选择器)) 时钟网络资源(全局时钟网络,区域时钟网络,IO时钟网络),理解时钟网络的本质和意义 时钟处理单元(PLL,DCM),理解时钟网络资源和时钟处 ...

  9. [2017BUAA软工助教]个人项目准备工作

    BUAA软工个人项目准备工作 零.注册Github个人账号(你不会没有吧..) 这是Git的使用教程: http://www.cnblogs.com/schaepher/p/5561193.html ...

  10. 【kindle笔记】之 《黑客微百科》-2018-6-17

    前段时间复习六级的时候,从图书馆看到一本书,然后带回来了.今天开始读.今天是2018年6月17日. 严格来讲,一本不算kindle笔记的笔记,不过广义的啃豆笔记了解一下.哈哈. 首页说到的黑客理念是: ...