Django rest - сделать сериализатор для создания объекта по полям данных как дочернего, так и родительского класса

Объект пользователя и объект учителя создаются, но поле "имя" объекта учителя не получает данных.

postman POST:

{ "email": "b@gmail.com", "пароль": "b1234", "password2": "b1234", "Teacher":{"name":"b"} }

serializers- view.py

class TeacherSignupView(generics.GenericAPIView):
    serializer_class=UserSerializer
    
    def post(self, request, *args, **kwargs):
        serializer=self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user=serializer.save()
        return Response({
            "user":UserSerializer(user, context=self.get_serializer_context()).data,
            "token": Token.objects.get(user=user).key,
            "message":"account created successfully"
        })

serializers- serializers.py

class TeacherSignupSerializer(serializers.ModelSerializer):
    
    class Meta:
        model=Teacher
        fields=['name']
        user=Teacher
         
      

class UserSerializer(serializers.ModelSerializer):
    
    Teacher=TeacherSignupSerializer()
    password2=serializers.CharField(style={"input_type":"password"}, write_only=True)
    class Meta:
        model=User
        fields=['email','password', 'password2', 'Teacher']
        extra_kwargs={
            'password':{'write_only':True}
        }
    
    def create(self, validated_data):
        t_data=validated_data.pop('Teacher')
        user=User(
            email=self.validated_data['email']
        )
        
        password=self.validated_data['password']
        password2=self.validated_data['password2']
        if password != password2:
            raise serializers.ValidationError({"error":"Password did not match"})
        user.set_password(password)
        user.is_teacher=True
        user.save()
        for name in t_data:
            Teacher.objects.create(user=user, name=name)
        return user

в почтальоне используется следующим образом.

{"email": "b@gmail.com", "password": "b1234", "password2": "b1234", "Teacher":[{"name":"b"}]}

Вернуться на верх