Django用户模型扩展

前言

Django模型本身自带User模型,可以完成基本的用户功能,不过由于其自带属性较少(用户名,密码,姓,名,邮箱,权限),有时难以满足使用,因此需要涉及用户模型扩展。本方法思路是创建一个普通模型,使其与Django自带用户模型形成一一对应关系,优点是创建使用比较简单,并对原先模型影响较小;缺点是与用户模型联系不够紧密,无论是模型还是数据库,两部分内容都是分离的,仅仅是有对应关系。所以需要根据具体情况斟酌使用。

环境

  • windows10
  • pycharm2017.3.3 professional edition
  • python3.6.4
  • django2.0.2

方法

使用Profile扩展,默认已使用Django自带用户模型
1. 创建用户模型扩展模型,在views.py文件内

from django.contrib.auth.models import User

# 用户模型扩展
class Profile(models.Model):
    user = models.OneToOneField(User)  # 与Django自带用户模型建立对应关系
    company = models.CharField(max_length=40, default="")  # 公司
    location = models.CharField(max_length=80, default="")  # 地址
  1. 在admin.py文件内注册模型

    from .models import *  # 从models.py引入所有模型
    
    class ProfileAdmin(admin.ModelAdmin):
    list_display = ("user", "company", "location")
    
    admin.site.register(Profile, ProfileAdmin)
  2. 模型的使用,在网页内

    • Django自带模型

      <p>{{ user.email }}</p>
    • 扩展模型

      <p>{{ user.profile.company }}</p>

参考文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值