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

請告訴你在問題代碼中的方法 –

相關問題