Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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
Django REST Framework UserSerializer中的keyerror_Django_Django Rest Framework - Fatal编程技术网

Django REST Framework UserSerializer中的keyerror

Django REST Framework UserSerializer中的keyerror,django,django-rest-framework,Django,Django Rest Framework,我试图为新用户向createapi处理程序添加一些功能。我有一个关联的UserProfile表,我想将新创建的用户添加到该表中,并添加URL参数的值 POST api调用如下所示: .../api/users/?username=fred&email=me@me.com&password=1234&data=whatever 标准Django用户表的序列化程序是: class UserSerializer(serializers.ModelSerializer):

我试图为新用户向createapi处理程序添加一些功能。我有一个关联的UserProfile表,我想将新创建的用户添加到该表中,并添加URL参数的值

POST api调用如下所示:

.../api/users/?username=fred&email=me@me.com&password=1234&data=whatever
标准Django用户表的序列化程序是:

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'password', 'email')
        write_only_fields = ('password',)
        read_only_fields = ('id',)

    def create(self, validated_data):
        the_user = User.objects.create(
            username=validated_data['username'],
            email=validated_data['email']
        )

        the_user.set_password(validated_data['password'])
        the_user.save()

        # Create associated user profile
        user_profile = UserProfile.objects.create(
            data=validated_data['data'],
            user=the_user.id
        )
        user_profile.save()

        return the_user
用户资料的视图为:

class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer
我的新UserProfile表模型是:

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    data = models.CharField(max_length=100)
我还没有为UserProfile创建视图或序列化程序,因为我现在要做的就是在创建新用户时添加一行,并输入POST url中传递的数据参数值

Django在创建新用户时报告以下错误:

KeyError: 'data'
validated\u数据
没有
数据
输入
UserSerializer。创建
。它只包含您在序列化程序的Meta.fields中定义的键

    fields = ('id', 'username', 'password', 'email')

您应该发布完整的异常回溯。如果不阅读回溯,就很难确定错误的原因。请帮我解决这个关键错误
    fields = ('id', 'username', 'password', 'email')