我是django rest框架的新手,我想创建不同类型的用户“我认为应该是4”,(学生,教师,教职员工和admin),并且我希望教职员工用户注册老师和学生用户。我想使用自定义用户模型并使用电子邮件进行注册和登录,可以吗,请帮忙,我一直在寻找可以帮助我了解如何做的事情
答案 0 :(得分:1)
您可以使用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)
**
之后,您必须更新我们的settings.py,以定义AUTH_USER_MODEL属性。
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中使用此序列化程序并创建具有不同用户类型的用户
最诚挚的问候,
答案 1 :(得分:0)