【发布时间】:2020-10-28 16:56:31
【问题描述】:
我是 django rest 框架的新手,我想创建不同类型的用户“我认为应该是 4”,(学生、教师、员工和管理员)我希望员工用户注册教师和学生用户.我想使用自定义用户模型并使用电子邮件注册和登录,可以做到吗,请帮忙,我一直在寻找可以帮助我理解如何做的任何事情
【问题讨论】:
标签: django django-models django-rest-framework
我是 django rest 框架的新手,我想创建不同类型的用户“我认为应该是 4”,(学生、教师、员工和管理员)我希望员工用户注册教师和学生用户.我想使用自定义用户模型并使用电子邮件注册和登录,可以做到吗,请帮忙,我一直在寻找可以帮助我理解如何做的任何事情
【问题讨论】:
标签: django django-models django-rest-framework
您可以使用 AbstractUser ,这非常简单,因为类 django.contrib.auth.models.AbstractUser 提供了默认 User 作为抽象模型的完整实现。
**
from django.db import models
from django.contrib.auth.models import AbstractUser
USER_TYPE_CHOICES = (
('student', 'student'),
('teacher', 'teacher'),
('staff', 'staff'),
('admin', 'admin'),
)
class User(AbstractUser):
user_type = models.CharField(max_length=40,choices=USER_TYPE_CHOICES)
**
之后,您必须更新定义 AUTH_USER_MODEL 属性的 settings.py。
AUTH_USER_MODEL = 'Your app name.User'
您可以在您的 serializers.py 中作为用户名发送电子邮件:
class RegisterSerializer(serializers.ModelSerializer):
password1 = serializers.CharField(write_only=True)
class Meta:
model = User
fields = ('first_name', 'last_name', 'email', 'password','password1', 'user_type',)
def validate(self, attr):
validate_password(attr['password'])
return attr
def create(self, validated_data):
user = User.objects.create(
username=validated_data['email'],
user_type=validated_data['user_type'],
email=validated_data['email'],
first_name=validated_data['first_name'],
last_name=validated_data['last_name'],
)
user.set_password(validated_data['password'])
user.save()
return user
现在,您可以在您的 views.py 中使用此序列化程序并创建具有不同用户类型的用户
最好的问候,
【讨论】:
【讨论】: