TypeError:字符串索引必须是整数Django

2024-10-01 02:26:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道我应该向django-rest-framework发送什么样的数据,而不获取字符串索引必须是整数

功能是

@permission_classes((IsAuthenticated,))
def update_interests(request): 
    user_profile = request.user.userprofile
    interests = request.data
    user_profile.interests.set(
            TopicTag.objects.get(name=interest['name'])[0] for interest in interests
    )
    user_profile.save()
    serializer = UserProfileSerializer(user_profile, many=False)
    return Response(serializer.data)

错误是

typeError: string indices must be integers

我发送的数据是json

{
    "name": ["news"]

}

以防万一models.py看起来像这样

class TopicTag(models.Model):
    name = models.CharField(primary_key=True, max_length=150, null=False, blank=False)
    
    def __str__(self):
        return self.name


也许你需要序列化程序,所以你在这里

class TopicTagSerializer(serializers.ModelSerializer):
    class Meta:
        model = TopicTag
        fields = '__all__'



帮帮我:)


Tags: 数据namefalsedatareturnmodelsrequestdef
1条回答
网友
1楼 · 发布于 2024-10-01 02:26:31

request.data是一个字典。其值如下所示:

{
"name": ["news"]
}

当您在for循环中遍历它时,它将在迭代器中返回字典的键。 在这种情况下:

"name"

现在,当你试图像这样访问它

interest["name"]

它返回一个错误,因为它需要一个整数

你可以得到这样的名字

request.data.get("name")

在你的查询中,你可以这样做

TopicTag.objects.get(name=interest)

相关问题 更多 >