0

我正在尝试创建用户,其中用户模型有两个用户配置文件,例如,师生。在创建用户时,我还想在Teacher或Student配置文件中创建User实例。Django使用两个用户配置文件模型注册api

这里是我的串行类:

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_type学生,我需要创建用户实例为StudentProfile以及(在学生档案表中的新行)

回答

0

可能是你可以添加简单的,如果条件?:

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 
+0

我忘了添加,我在学生模型中有'create_student_profile'方法,我试图调用这个方法来创建学生实例。 – user8169843

+0

上面的代码工作得很好,但我仍然不确定为什么我不能使用'create_student_profile' – user8169843

+0

请告诉你在问题代码中的方法 –

相关问题