可写的嵌套Django序列化器错误



我有一个问题:

    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

最新更新