如何使用Django Rest框架为不同的用户类型创建自定义用户模型

时间:2020-10-28 16:56:31

标签: django django-models django-rest-framework

我是django rest框架的新手,我想创建不同类型的用户“我认为应该是4”,(学生,教师,教职员工和admin),并且我希望教职员工用户注册老师和学生用户。我想使用自定义用户模型并使用电子邮件进行注册和登录,可以吗,请帮忙,我一直在寻找可以帮助我了解如何做的事情

2 个答案:

答案 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)