auth.models.User和.model.User(abstract)之间有区别吗?
创始人
2024-09-22 09:30:41
0

Django的auth应用程序提供了一个内置的用户模型(User model):auth.models.User。 但是,你也可以自己定义一个用户模型,继承自Django的抽象基类AbstractBaseUser或AbstractUser。 在这种情况下,你可以使用.model.User(AbstractUser)。

区别在于继承的基类。 auth.models.User继承自AbstractBaseUser(内置的用户模型),而.model.User(AbstractUser)直接继承自AbstractBaseUser。

以下是一个示例,根据需要选择继承的基类:

from django.db import models
from django.contrib.auth.models import AbstractUser, BaseUserManager, AbstractBaseUser

# 继承自auth.models.User
class CustomUser(models.Model):
   user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True, related_name='custom_user')
   # 添加自定义字段
   # ...

# 继承自AbstractBaseUser
class MyUserManager(BaseUserManager):
    def create_user(self, email, password=None):
        """
        Creates and saves a User with the given email and password.
        """
        if not email:
            raise ValueError('Users must have an email address')

        user = self.model(
            email=self.normalize_email(email),
        )

        user.set_password(password)
        user.save(using=self._db)

        return user

    def create_superuser(self, email, password):
        """
        Creates and saves a superuser with the given email and password.
        """
        user = self.create_user(
            email=email,
            password=password,
        )
        user.is_admin = True
        user.save(using=self._db)
        return user

# 继承自AbstractBaseUser
class CustomUser(AbstractBaseUser):
    email = models.EmailField(
        verbose_name='email address',
        max_length=255,
        unique=True,
    )
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)

    objects = MyUserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    def __str__(self):
        return self.email

相关内容

热门资讯

此事迅速冲上热搜!wepoke... 此事迅速冲上热搜!wepoker辅助是真的假的,德扑之星怎么开辅助,总是真的是有挂(有挂解密)1、德...
黑科技辅助挂!wepoker轻... 您好,德普之星有透视辅助吗这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很...
昨日!wpk透视辅助方法,德普... 昨日!wpk透视辅助方法,德普之星怎么开辅助,本来真的是有挂(有挂秘诀)1、玩家可以在德普之星怎么开...
针对!哈糖大菠萝助手,德扑之星... 针对!哈糖大菠萝助手,德扑之星怎么开辅助,总是是有挂(有挂分析)1)德扑之星怎么开辅助免费钻石:进一...
第三方技巧!hhpoker有没... 第三方技巧!hhpoker有没有外挂,智星菠萝辅助,真是存在有挂(有挂分析)1、智星菠萝辅助透视辅助...
为切实保障!wejoker辅助... 为切实保障!wejoker辅助器要钱玩吗,德普之星怎么开辅助,本来是有挂(有挂技术)1、让任何用户在...
受玩家影响!淘宝买wepoke... 受玩家影响!淘宝买wepoker透视有用吗,德普之星私人局辅助免费,切实确实有挂(有挂神器)1、让任...
黑科技插件!wepoker免费... 黑科技插件!wepoker免费辅助器,德普之星透视辅助插件,其实确实有挂(存在有挂)德普之星透视辅助...
插件辅助挂!约局吧德州可以透视... 插件辅助挂!约局吧德州可以透视吗,红龙poker辅助,果然真的是有挂(有挂教程)1、进入到红龙pok...
此事引发广泛关注!wepoke... 此事引发广泛关注!wepoker辅助分析器,如何下载德普之星辅助软件,切实真的是有挂(有挂头条)1、...