Django中创建自己的用户模型

创建自己的用户字段

Django自带一套USER字段

​ 并有一整套的认证模式等,可以直接使用,也可以在此基础上扩展,具体查看文档的

Extending the existing User model 部分

  1. 不改变原有数据,只是增加属于自己的方法,可以用 proxy models 实现

    具体方法为,新建一个类,在类里的 Meta 类中 设置 proxy 属性为 True

    from django.db import models
    
    class Person(models.Model):
        first_name = models.CharField(max_length=30)
        last_name = models.CharField(max_length=30)
    
    class MyPerson(Person):
        class Meta:
            proxy = True
    
        def do_something(self):
            # ...
            pass

    所以应该这样改(推测):

    from django.contrib.auth.models import User
    
    class MyUser(User):
        class Meta:
        proxy = True

  1. 修改原来的数据项

  2. 强烈建议建立项目的时候使用自定义的 USER 继承默认 USER,从而取代默认 USER,即使不改变默认任何字段,但这样方便以后扩展。记得替换之后,执行下面的第1步和第三步。

    from django.contrib.auth.models import AbstractUser
    
    class User(AbstractUser):
        pass
    


也可以自己定义一个USER字段

具体在文档的 Substituting a custom User model

  1. 在 setting 里加入语句 AUTH_USER_MODEL = 'myapp.MyUser'

  2. 在 app 的 models 里面写入自定义的 USER字段

    1. 最简单的自定义方法是继承 AbstractBaseUser

    2. 定义字段时,如果需要使用 Django 提供的认证后端,则必须保证至少有一个字段是 unique=True

    class MyUser(AbstractBaseUser):
        identifier = models.CharField(max_length=40, unique=True)
        ...
        USERNAME_FIELD = 'identifier'

    这里的 USERNAME_FIELD 字段是用作认证的,需要声明给 Django 知道,方便认证。

  3. 记得在 app 的 admin.py 中注册这个模式(为了使管理员界面中显示这个数据类型)

    from django.contrib import admin
    from django.contrib.auth.admin import UserAdmin
    from .models import User
    
    admin.site.register(User, UserAdmin)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值