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设计足球联赛赛程表程序的思路与简单实现示例
Jun 28 Python
Python操作Excel之xlsx文件
Mar 24 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
python实战教程之自动扫雷
Jul 13 Python
Random 在 Python 中的使用方法
Aug 09 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
Feb 13 Python
Python线程之定位与销毁的实现
Feb 17 Python
Django框架自定义session处理操作示例
May 27 Python
Python创建或生成列表的操作方法
Jun 19 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
Pythonic版二分查找实现过程原理解析
Aug 11 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
destoon各类调用汇总
2014/06/20 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
理解Javascript_08_函数对象
2010/10/15 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
2017/01/06 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python输出带颜色的字符串实例
2017/10/10 Python
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
对python模块中多个类的用法详解
2019/01/10 Python
详解python读取image
2019/04/03 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
Python多线程多进程实例对比解析
2020/03/12 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
Django QuerySet查询集原理及代码实例
2020/06/13 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
python中tab键是什么意思
2020/06/18 Python
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
黑猩猩商店:The Chimp Store
2020/02/12 全球购物
医学类个人求职信范文
2014/02/05 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
统计工作个人总结
2015/03/03 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
学习雷锋主题班会
2015/08/14 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书