Python Django rest框架AttributeError:can';在序列化程序上找不到字段

Python Django rest框架AttributeError:can';在序列化程序上找不到字段,python,django,django-rest-framework,django-rest-auth,Python,Django,Django Rest Framework,Django Rest Auth,背景语境 我正在使用django rest框架和django rest auth构建一个API。我的身份验证方案不仅使用电子邮件/用户名和密码的默认身份验证,还需要配置文件模型上提供的其他数据 因此,我使用一个自定义注册序列化程序,并覆盖设置中的REGISTER\u serializer类 这是序列化程序,如下所示: class UserProfileSerializer(serializers.ModelSerializer): phone_number = PhoneNumberF

背景语境


我正在使用django rest框架和django rest auth构建一个API。我的身份验证方案不仅使用电子邮件/用户名和密码的默认身份验证,还需要
配置文件
模型上提供的其他数据

因此,我使用一个自定义注册序列化程序,并覆盖设置中的
REGISTER\u serializer

这是序列化程序,如下所示:

class UserProfileSerializer(serializers.ModelSerializer):
    phone_number = PhoneNumberField()

    class Meta(object):
        model = Profile
        fields = ('phone_number', 'birth_date', 'anniversary', 'user_type',)



class UserRegisterSerializer(serializers.Serializer):
    username = serializers.CharField(
        max_length=get_username_max_length(),
        min_length=allauth_settings.USERNAME_MIN_LENGTH,
        required=allauth_settings.USERNAME_REQUIRED
    )
    email = serializers.EmailField(required=allauth_settings.EMAIL_REQUIRED)
    serializers.EmailField(required=allauth_settings.EMAIL_REQUIRED)
    password1 = serializers.CharField(write_only=True)
    password2 = serializers.CharField(write_only=True)
    profile = UserProfileSerializer()


..............
Validation methods
..............

def custom_signup(self, request, user):
    pass

def get_cleaned_data(self):
    return {
        'username': self.validated_data.get('username', ''),
        'password1': self.validated_data.get('password1', ''),
        'email': self.validated_data.get('email', '')
    }

def save(self, request):
    adapter = get_adapter()
    user = adapter.new_user(request)
    self.cleaned_data = self.get_cleaned_data()
    adapter.save_user(request, user, self)
    self.custom_signup(request, user)
    setup_user_email(request, user, [])

    profile_data = self.validated_data.pop('profile', {})
    user_repo.create_object(user=user, **profile_data)

    return user

问题

序列化程序和对应的端点的工作原理是,它正在创建用户和关联的概要文件,但是在序列化步骤中,当返回响应时,我得到以下错误:

KeyError: "Got KeyError when attempting to get a value for field `profile` on serializer `UserRegisterSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `OrderedDict` instance.
Original exception text was: 'profile'."
如您所见,该字段存在于序列化程序上。我尝试将该字段添加到
Meta
classe的字段属性中,但没有成功

我已经把它缩小到
rest\u framework/serializers.py中的函数
to\u representation
,行号
488
。当序列化程序尝试调用嵌套序列化程序上的
get\u属性
时,会发生此错误

谢谢

编辑


Edit-1

您能显示该视图吗?该视图是
django rest framework
使用的默认视图。我可以链接到它。你可以发布完整的堆栈跟踪吗?@FazilZaid确实,当你使用自定义设置文件时,你在设置文件中添加了“REGISTER\u SERIALIZER”字段了吗?你能显示视图吗?该视图是
django rest framework
使用的默认视图。我可以链接到它。你也可以发布完整的堆栈跟踪吗?@FazilZaid确定你在设置文件中添加了“REGISTER\u SERIALIZER”字段,因为你正在使用自定义字段?