覆盖 django-rest-auth 中的 UserDetailsS​​erializer

Overriding the UserDetailsSerializer in django-rest-auth

我正在尝试使用自定义的用户详细信息修改 UserDetailsS​​erializer,但是当服务器 运行ning 时,它抛出错误“'User' 对象没有属性 'user' ”。我尝试了很多方法,其中 none 有效。

我的代码是:

mode.py

class userProfileModel(models.Model):

GENDER = [
    ('', ""),
    ('M', "Male"),
    ('F', "Female")
]

user = models.OneToOneField(User, related_name='userprofile', on_delete=models.CASCADE, default='')
age = models.DateField(auto_now_add=True)
gender = models.CharField(max_length=10, choices=GENDER, default='')
phone = models.IntegerField(default=0)
user_is_active = models.BooleanField(default=False)

def __str__(self):
    return self.user.username

和serializers.py

from rest_auth.serializers import UserDetailsSerializer
from rest_framework import serializers

from .models import userProfileModel


class Profile(serializers.ModelSerializer):
    user = UserDetailsSerializer()
    class Meta:
        model = userProfileModel
        fields = ('user',)


class UserDetailsSerializer(UserDetailsSerializer):
    profile = Profile(many=True)

    class Meta(UserDetailsSerializer.Meta):
        fields = UserDetailsSerializer.Meta.fields + ('profile',)
        read_only_fields = ('',)

和settings.py

REST_AUTH_SERIALIZERS = {
'USER_DETAILS_SERIALIZER': 'app.serializers.UserDetailsSerializer',
}

当我运行这段代码时,它会抛出这个错误。

尝试在序列化程序 UserDetailsSerializer 上获取字段 profile 的值时出现 AttributeError。 序列化程序字段的命名可能不正确,并且与 User 实例上的任何属性或键都不匹配。 原始异常文本为:'User' 对象没有属性 'profile'.

使用source='userprofile'作为

class UserDetailsSerializer(UserDetailsSerializer):
    <b>profile = Profile(source='userprofile')</b>

    class Meta(UserDetailsSerializer.Meta):
        fields = UserDetailsSerializer.Meta.fields + ('profile',)
        read_only_fields = ('',)

因为 UseruserProfileModelOneToOne关系,你不想在序列化器

中指定many=True参数