django 多用户模型案例代码
时间: 2023-11-09 13:01:33 浏览: 84
Django示例代码
下面是一个 Django 多用户模型的示例代码:
```python
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin
from django.db import models
class UserManager(BaseUserManager):
def create_user(self, email, password=None, **extra_fields):
if not email:
raise ValueError('The Email field must be set')
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password=None, **extra_fields):
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
return self.create_user(email, password, **extra_fields)
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(unique=True)
first_name = models.CharField(max_length=30, blank=True)
last_name = models.CharField(max_length=30, blank=True)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
date_joined = models.DateTimeField(auto_now_add=True)
objects = UserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
def get_full_name(self):
full_name = '%s %s' % (self.first_name, self.last_name)
return full_name.strip()
def get_short_name(self):
return self.first_name
def __str__(self):
return self.email
```
在这个示例代码中,我们使用了 Django 的内置 `AbstractBaseUser` 和 `BaseUserManager` 类来定义了一个自定义的用户模型。这个模型包含了一个 `UserManager` 类,用于管理用户的创建和更新。同时,我们还定义了一些基本的用户属性,如电子邮件地址、密码、名称等。用户模型还包含了 `is_active` 和 `is_staff` 属性,用于控制用户的活动状态和管理员权限。最后,我们还定义了一些方法,如获取用户全名和短名,以及将用户对象转换为字符串。
阅读全文