代码之家  ›  专栏  ›  技术社区  ›  user8169843

Django注册api和两个用户配置文件模型

  •  0
  • user8169843  · 技术社区  · 8 年前

    我正在尝试创建用户,其中用户模型有两个用户配置文件,例如教师和学生。在创建用户时,我也想在教师或学生档案中创建用户实例。

    class StudentSerializer(serializers.ModelSerializer):
    
        class Meta:
            model = Student
            fields = ('id', 'user_id')
    
    
    class TeacherSerializer(serializers.ModelSerializer):
    
        class Meta:
            model = Teacher
            fields = ('id', 'user_id')
    
    
    class UserSerializer(serializers.ModelSerializer):
    
        class Meta:
            model = User
            fields = (
                'id',
                'username',
                'password',
                'email',
                'user_type'
            )
            extra_kwargs = {
                'password': {'write_only': True},
            }
    
        def create(self, validated_data):
            user = User.objects.create_user(**validated_data)
            return user
    

    以下是自定义注册视图:

    class CreateUserView(CreateAPIView):
    
        model = User
        permission_classes = [
            permissions.AllowAny # Or anon users can't register
        ]
        serializer_class = UserSerializer
    

    现在,我能够创建用户,但根据 user_type 参数对我来说是一个挑战。

    大学生

    1 回复  |  直到 8 年前
        1
  •  0
  •   user8169843    8 年前

    可以添加简单的if条件吗

    def create(self, validated_data):
        user = User.objects.create_user(**validated_data)
        if validated_data('user_type') == 'student':
            Student.objects.create(user_id=user.id)
        else:
            Teacher.objects.create(user_id=user.id)
        return user
    
    推荐文章