Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据Django请求发送JSON以创建新用户和配置文件?_Python_Json_Django_Rest_Django Rest Framework - Fatal编程技术网

Python 如何根据Django请求发送JSON以创建新用户和配置文件?

Python 如何根据Django请求发送JSON以创建新用户和配置文件?,python,json,django,rest,django-rest-framework,Python,Json,Django,Rest,Django Rest Framework,从django rest framework站点示例中,我编写了UserSerializer.py,我的ProfileSerializer如下所示: class ProfileSerializer(serializers.ModelSerializer): class Meta: model = Profile fields = ['facebook_id', 'facebook_token', 'push_device_token', 'photo',

从django rest framework站点示例中,我编写了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"
   }
}
class Profile(models.Model):
    user = models.ForeignKey(User)
但我只得到一个错误:

试图获取序列化程序
UserSerializer
上的字段
profile
的值时,获取了AttributeError

序列化程序字段的名称可能不正确,并且与
用户
实例上的任何属性或键都不匹配

原始异常文本为:“用户”对象没有属性“配置文件”


我认为这可能是因为缺乏对用户模型的参考。假设您的配置文件模型如下所示:

{
   "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"
   }
}
class Profile(models.Model):
    user = models.ForeignKey(User)
模型用户将具有
配置文件集
属性,而不是
配置文件
。要调整此值,请使用:


我想您不应该在字段列表中包含配置文件,因为它实际上不是模型上的字段。您是否尝试打印已验证的\u数据。。。也放满了traceback@DanielRoseman如果字段列表中没有配置文件,我会出现以下错误:
字段“profile”是在serializer UserSerializer上声明的,但未包含在“字段”选项中。
请显示
ProfileSerializer
。请尝试从字段和声明profile=ProfileSerializer()中删除它。它应该可以工作,因为在序列化程序中没有其他依赖性b/w两个模型。实际上,它应该是
user=models.OneToOneField(user)
。在这种情况下,这个问题不会发生。