类型错误:字符串索引必须是整数 django

时间:2021-06-21 06:53:27

标签: python django react-native django-rest-framework

我想知道我应该向 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__'



帮助我:)

1 个答案:

答案 0 :(得分:0)

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

{
"name": ["news"]
}

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

"name"

现在当你尝试像这样访问它

<块引用>

兴趣[“姓名”]

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

你可以得到这样的名字

request.data.get("name")

在你的查询中你可以做这样的事情

TopicTag.objects.get(name=interest)