Python django rest错误:创建对象时缺少必需的位置参数

Python django rest错误:创建对象时缺少必需的位置参数,python,django,django-rest-framework,django-serializer,Python,Django,Django Rest Framework,Django Serializer,我有这些序列化程序类,我正在尝试一起创建医生和用户 class UserSerializer(serializers.ModelSerializer): password2 = serializers.CharField(style={'input_type': 'password'}, write_only=True) class Meta: model = User fields = '__all__' extra_kwar

我有这些序列化程序类,我正在尝试一起创建医生和用户

class UserSerializer(serializers.ModelSerializer):

    password2 = serializers.CharField(style={'input_type': 'password'}, write_only=True)

    class Meta:
        model = User
        fields = '__all__'
        extra_kwargs = {
            'password': {'write_only': True}
        }

    def create(self, validated_data):
        print(validated_data)
        user = User(
            email=self.validated_data['email'],
            first_name = self.validated_data['first_name'],
            last_name=self.validated_data['last_name'],
            phone_number=self.validated_data['phone_number'],
            social_id=self.validated_data['social_id'],
            gender=self.validated_data['gender']
        )
        password = self.validated_data['password']
        password2 = self.validated_data['password2']

        if password != password2:
            raise serializers.ValidationError({'password': 'Passwords do not match.'})

        user.set_password(password)
        user.save()
        return user

    
class DoctorSerializer(serializers.ModelSerializer):
    
    user = UserSerializer()

    class Meta:
        model = Doctor
        fields = '__all__'
        

    def create(self, validated_data):
        user_data = validated_data.pop('user')
        print(user_data)
        
        user = UserSerializer.create(**user_data)
        doctor = Doctor(
            user=user,
            mc_code=self.validated_data['mc_code']
        )
        doctor.save()
        return doctor
我将这些json数据发送给这些序列化程序

{
    "user": {
        "email": "test@test.com",
        "first_name": "john",
        "last_name": "doe",
        "phone_number": "12345678901",
        "social_id": "1234567890",
        "password": "password",
        "password2": "password"
    },
    "mc_code": 123448
}
但它给了我一个错误:

Exception Type: TypeError
Exception Value: create() got an unexpected keyword argument 'password2'
create()
UserSerializer
create
函数 我阅读了文档,但我无法解决问题。
我做错了什么

查看
功能以防万一

@api_view(['POST', ])
@permission_classes(())
def doctor_registration_view(request):
    if request.method == 'POST':
        serializer = DoctorSerializer(data=request.data)
        data = {}
        if serializer.is_valid():
            doctor = serializer.save()
        else:
            data = serializer.errors
        return Response(data)

您需要为序列化程序指定密码和密码2。在代码中,您只指定了密码,但从未指定密码2
password2
UserSerializer
中,
password
User
模型中。另外,当我单独使用
UserSerializer
时,它也可以工作。我的代码在嵌套序列化程序中有问题,我认为它在
DoctorSerializer