django 自定义用户user模型的三种方法


Posted in Python onNovember 18, 2014

django version: 1.7.1

最简单的推荐:
使用abstractuser扩充fields

profiles/models.py
from django.db import models

from django.contrib.auth.models import AbstractUser

from django.utils.translation import ugettext_lazy as _
# Create your models here.

class KarmaUser(AbstractUser):

karma = models.PositiveIntegerField(_("karma"),default=0,blank=True)

settings.py
AUTH_USER_MODEL = 'profiles.KarmaUser'

2.使用abstractbaseuser

只有当你对user
model里面的默认字段不满的时候才要使用,这个方法只保留了passwork,last_login,is_active三个字段
参考官方文档:
https://docs.djangoproject.com/en/1.7/topics/auth/customizing/

3.使用一对一关系将相关的模型一个个联系起来

这很像django 1.5之前的方式.很适用于创建第三方扩充包的场景,松耦合,不会破坏之前项目的结构.

需要此方法的场景:
- 在自己的django prj下,希望有多重user拥有各自很不相同的字段.或许希望有些用户组合起来一些用户的类型字段,并且希望能在模型层面上解决这些问题.
例子如下:

profiles/models.py

from django.conf import settings

from django.db import models
from flavors.models import Flavor
class EaterProfile(models.Model):

# 默认用户资料

user = models.OneToOneField(settings.AUTH_USER_MODEL)

favorite_ice_cream = models.ForeignKey(Flavor,null=True,blank=True)
class ScooperProfile(models.Model):

user = models.OneToOneField(settings.AUTH_USER_MODEL)

scoops_scooped = models.IntegerField(default=0)
class InventorProfile(models.Model):

user = models.OneToOneField(settings.AUTH_USER_MODEL)

flavors_invented = models.ManyToManyField(Flavor,null=True,blank=True)

个人认为在我的建站场景中,第二种最合适.正在测试是否可以用抽象类简化模型.待续...

以上3种方法各有优劣,大家根据自己的需求,自由选择吧。

Python 相关文章推荐
python使用7z解压软件备份文件脚本分享
Feb 21 Python
利用ctypes提高Python的执行速度
Sep 09 Python
python数据预处理之将类别数据转换为数值的方法
Jul 05 Python
浅析Python 实现一个自动化翻译和替换的工具
Apr 14 Python
深入浅析python 协程与go协程的区别
May 09 Python
详解如何管理多个Python版本和虚拟环境
May 10 Python
django认证系统 Authentication使用详解
Jul 22 Python
详解python中*号的用法
Oct 21 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
python获取天气接口给指定微信好友发天气预报
Dec 28 Python
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 Python
Python编写车票订购系统 Python实现快递收费系统
Aug 14 Python
使用grappelli为django admin后台添加模板
Nov 18 #Python
django模型中的字段和model名显示为中文小技巧分享
Nov 18 #Python
如何解决django配置settings时遇到Could not import settings 'conf.local'
Nov 18 #Python
github配置使用指南
Nov 18 #Python
Django1.7+python 2.78+pycharm配置mysql数据库教程
Nov 18 #Python
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 #Python
python服务器与android客户端socket通信实例
Nov 12 #Python
You might like
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
根据出生日期自动取得星座的js代码
2010/07/20 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
javascript loadScript异步加载脚本示例讲解
2013/11/14 Javascript
移动节点的jquery代码
2014/01/13 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
python 排列组合之itertools
2013/03/20 Python
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
Python中的getopt函数使用详解
2015/07/28 Python
python之文件读取一行一行的方法
2018/07/12 Python
创建Django项目图文实例详解
2019/06/06 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
2021/01/23 Python
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
餐饮主管岗位职责
2013/12/10 职场文书
实习评语
2013/12/16 职场文书
综合内勤岗位职责
2014/04/14 职场文书
客户答谢会活动方案
2014/08/31 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
工程合作意向书范本
2015/05/09 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
python实现过滤敏感词
2021/05/08 Python
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
spring cloud eureka 服务启动失败的原因分析及解决方法
2022/03/17 Java/Android