覆盖 django-rest-auth 中的 UserDetailsSerializer
Overriding the UserDetailsSerializer in django-rest-auth
我正在尝试使用自定义的用户详细信息修改 UserDetailsSerializer,但是当服务器 运行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 = ('',)
因为 User
和 userProfileModel
在 OneToOne关系,你不想在序列化器
中指定many=True
参数
我正在尝试使用自定义的用户详细信息修改 UserDetailsSerializer,但是当服务器 运行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 = ('',)
因为 User
和 userProfileModel
在 OneToOne关系,你不想在序列化器
many=True
参数