• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > django 自定义用户user模型的三种方法

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

作者:hebedich 字体:[增加 减小] 来源:互联网

hebedich 通过本文主要向大家介绍了django user,django superuser,django abstractuser,django 自定义标签,django 自定义权限等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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'
</div>

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)
</div>

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

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

</div>

您可能想查找下面的文章:

  • 在Django的session中使用User对象的方法
  • 在Django的session中使用User对象的方法
  • django 自定义用户user模型的三种方法

相关文章

  • Python实现SSH远程登陆,并执行命令的方法(分享)
  • Python在图片中添加文字的两种方法
  • Python按行读取文件的实现方法【小文件和大文件读取】
  • python re正则表达式模块(Regular Expression)
  • python检查序列seq是否含有aset中项的方法
  • 常见的在Python中实现单例模式的三种方法
  • Python中转换角度为弧度的radians()方法
  • Python实现3行代码解简单的一元一次方程
  • python从入门到精通(DAY 2)
  • 详解Django中的ifequal和ifnotequal标签使用

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
    • python实现的二叉树算法和kmp算法实例
    • python的keyword模块用法实例分析
    • Python的函数的一些高阶特性
    • Python中dictionary items()系列函数的用法实例
    • 深入解析Python中的线程同步方法
    • python logging类库使用例子
    • Python实现视频下载功能
    • Python的string模块中的Template类字符串模板用法
    • python实现支持目录FTP上传下载文件的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有