我有一个问题:
class UserProfiles(models.Model):
user = models.OneToOneField(User)
role_alt = models.CharField(max_length=256, null=False)
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = UserProfiles
fields = ('role_alt', )
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)
UserProfiles.objects.create(user=user, **profile_data)
return user
获得错误: 试图获得字段值时获得attributeError profile
序列化器UserSerializer
。串行器字段 可能被错误地命名,并且不匹配任何属性或键 User
实例。原始异常文本是:"用户"对象 没有属性"配置文件"。
ModelSerializer
中的字段名称应与模型中的字段名称相同。OneToOne
字段的默认反向查找是较低的模型名称。尝试将profile
重命名为userprofiles
:
class UserSerializer(serializers.ModelSerializer):
userprofiles = ProfileSerializer()
class Meta:
model = User
fields = ('username', 'email', 'userprofiles')
def create(self, validated_data):
profile_data = validated_data.pop('userprofiles')
user = User.objects.create(**validated_data)
UserProfiles.objects.create(user=user, **profile_data)
return user