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

Django register api with two User profile models

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

这是我的序列化器 类:

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 参数创建用户配置文件对我来说是一个挑战。

因此,如果 user_typestudent,我还需要为 StudentProfile 创建 User 实例(学生资料中的新行 table)

也许你可以添加简单的 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