我想知道我应该向 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__'
帮助我:)
答案 0 :(得分:0)
request.data 是一个字典。其值如下:
{
"name": ["news"]
}
当您在 for 循环中遍历它时,它会在迭代器中返回字典的键。 在这种情况下:
"name"
现在当你尝试像这样访问它
<块引用>兴趣[“姓名”]
它返回一个错误,因为它需要一个整数。
你可以得到这样的名字
request.data.get("name")
在你的查询中你可以做这样的事情
TopicTag.objects.get(name=interest)