由于我需要的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. geth工作运行程序转后台

    今天查看了一下运行程序怎么转后台,然后就发现了之前写的脚本一定要进行console控制台然后在解锁coinbase,然后才手动挖矿的操作真的是太笨了,后面研究了一下,发现是可以在运行语句上进行操作的: ...

  2. java操作Redis缓存设置过期时间

    关于Redis的概念和应用本文就不再详解了,说一下怎么在java应用中设置过期时间. 在应用中我们会需要使用redis设置过期时间,比如单点登录中我们需要随机生成一个token作为key,将用户的信息 ...

  3. 阿里云配置tomcat https

    阿里云申请免费的SSL证书和配置https,可参考该篇博文:https://blog.csdn.net/baidu_19473529/article/details/70037976 虽然有现成的,不 ...

  4. a2dp播放流程源码分析

    之前分析了a2dp profile 的初始化的流程,这篇文章分析一下,音频流在bluedroid中的处理流程. 上层的音频接口是调用a2dp hal 里面的接口来进行命令以及数据的发送的. 关于控制通 ...

  5. CSS实现树形结构 + js加载数据

    看到一款树形结构,比较喜欢它的样式,就参照它的外观自己做了一个,练习一下CSS. 做出来的效果如下: li { position: relative; padding: 5px 0; margin:0 ...

  6. CentOS 6.5下RPM方式(重新)安装MySQL 5.7.21从头到尾篇

    强烈推荐参阅这一篇教程  https://www.cnblogs.com/kevingrace/p/8340690.html 下面我写的仅供参考 今天把Mysql5.1升级到了5.7,浪费了一天为了避 ...

  7. el-date-picker 快捷日期简单计算

    const oneDaySeconds = 3600 * 1000 * 24 pickerOptions: { shortcuts: [ { text: '今天', onClick(picker) { ...

  8. zookeeper-分布式锁的代码实现-【每日五分钟搞定大数据】

    本文涉及到几个zookeeper简单的知识点,永久节点.有序节点.watch机制.比较基础,熟悉的就别看了跳过这篇吧 每个线程在/locks节点下创建一个临时有序节点test_lock_0000000 ...

  9. Item 17: 理解特殊成员函数的生成规则

    本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 C++的官方说法中,特殊成员函数是C++愿意去主动生成的.C++9 ...

  10. 领域驱动设计(DDD:Domain-Driven Design) 介绍

    Eric Evans的“Domain-Driven Design领域驱动设计”简称DDD,Evans DDD是一套综合软件系统分析和设计的面向对象建模方法,本站Jdon.com是国内公开最早讨论DDD ...