gpt4 book ai didi

django - Django REST Framework UserSerializer 中的 keyerror

转载 作者:行者123 更新时间:2023-12-01 12:28:52 25 4
gpt4 key购买 nike

我正在尝试为新用户的创建 API 处理程序添加一些功能。我有一个关联的 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

用户内容的 View 是:
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 创建 View 或序列化程序,因为我目前想要做的就是在创建新用户时添加一行,并放入在 POST url 中传递的数据参数的值。

Django新建用户时报如下错误:
KeyError: 'data'

最佳答案

# Create associated user profile
user_profile = UserProfile.objects.create(
data=validated_data['data'],
user=the_user.id
)
validated_data没有 data键入 UserSerializer.create .它只包含您在序列化程序的 Meta.fields 中定义的键
    fields = ('id', 'username', 'password', 'email')

关于django - Django REST Framework UserSerializer 中的 keyerror,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36653041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com