从django rest框架网站示例我写了我的UserSerializer.py,我的ProfileSerializer是这样的:
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = ['facebook_id', 'facebook_token', 'push_device_token', 'photo', 'status', 'level']
class UserSerializer(serializers.ModelSerializer):
profile = ProfileSerializer()
class Meta:
model = User
fields = ('username', 'email', 'profile')
def create(self, validated_data):
profile_data = validated_data.pop('profile')
user = User.objects.create(**validated_data)
Profile.objects.create(user=user, **profile_data)
return user
我正在发送这样的JSON请求:
{
"username":"admin",
"email":"e@e.com",
"password":12345678,
"profile":{
"status":1,
"level":1,
"facebook_id":1,
"facebook_token":1,
"push_device_token":1,
"photo":"url.com"
}
}
但我只收到错误:
尝试在序列化程序
profile
上获取字段UserSerializer
的值时出现AttributeError。序列化程序字段可能名称不正确,与
User
实例上的任何属性或键都不匹配。原始例外文字是:'用户'对象没有属性' profile'。
答案 0 :(得分:1)
我认为可能缺乏对User模型的引用。假设您的个人资料模型如下所示:
class Profile(models.Model):
user = models.ForeignKey(User)
模型用户将具有profile_set
属性,而不是profile
。要调整此项,请使用related_name:
class Profile(models.Model):
user = models.OneToOneField(User, related_name='profile')