Проблема вложенного сериализатора DRF при создании

У меня есть модель пользователя и модель телефона, модель телефона имеет отношение внешнего ключа с моделью пользователя. Я прочитал документацию по NestedSerializers и попробовал безрезультатно.

это мой файл serializers.py

class PhoneSerializer(serializers.ModelSerializer):
    # opt = serializers.IntegerField(read_only=True)

    class Meta:
        model = Phone
        fields = ['phone']


    class RegisterSerializerBase(serializers.ModelSerializer):
        phone = PhoneSerializer(allow_null=True)
        # otp = PhoneSerializer(many=True, read_only=True)
        email = serializers.EmailField(
            required=True,
            validators=[UniqueValidator(queryset=User.objects.all())])
    
        password = serializers.CharField(
            write_only=True, re

quired=True, validators=[validate_password])
    password2 = serializers.CharField(write_only=True, required=True)

    class Meta:
        model = User
        fields = ('email', 'firstname', 'lastname', 'password', 'password2',
                  'phone',)
        extra_kwargs = {'password': {'write_only': True},
                        'password2': {'write_only': True},
                        'firstname': {'required': True},
                        'lastname': {'required': True},
                        }

    def validate(self, attrs):
        if attrs['password'] != attrs['password2']:
            raise serializers.ValidationError(
                {"password": "Password fields didn't match."})

        return attrs

    def create(self, validated_data):
        phones = validated_data.pop('phone')
        instance = User.objects.create(
            email=validated_data['email'],
            firstname=validated_data['firstname'],
            lastname=validated_data['lastname'],
            is_active='True',
            type=User.TYPES.OWNER,
        )
        instance.set_password(validated_data['password'])
        for phone in phones:
            Phone.objects.create(instance=instance, **phone)
        instance.save()

        return instance

когда я захожу в Browsable API и создаю пользователя с учетными данными, появляется ошибка, говорящая

django.db.models.manager.BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_method() argument after ** must be a mapping, not str

Проверьте, поможет ли вам это -

Модели - Модель пользователя уже определена.

class Phone(models.Model):
    user = models.Foerienkey(User, related_name="abc")
    phone = models.CharField(max_length=13, blank=True, null=True)

Сериализатор -

from rest_framework import serializers
from django.contrib.auth.models import User

class CurrentUserSerializer(serializers.Serializer):
    abc = phoneserializer(many=True, required=False)
    ## define phone serializer before currentuser serializer
    class Meta:
        model = User
        fields = ('username', 'email', 'id', 'abc')

Виды -

## метод создания пользователя

 def create(self, validated_data):
        phones = validated_data.pop('recievedPhoneDataArray')
        instance = User.objects.create(
            email=validated_data['email'],
            firstname=validated_data['firstname'],
            lastname=validated_data['lastname'],
            is_active='True',
            type=User.TYPES.OWNER,
        )
        instance.set_password(validated_data['password'])
        for phone in phones:
            Phone.objects.create(user=instance, **phone)
        instance.save()

        return instance

Вам придется расширить registeruserserializer из rest frameowrk. возможно.

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