Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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
Python django-外键模型序列化程序中的键错误_Python_Django_Serialization - Fatal编程技术网

Python django-外键模型序列化程序中的键错误

Python django-外键模型序列化程序中的键错误,python,django,serialization,Python,Django,Serialization,我检查了所有相关问题,但仍然好奇是否有更新的答案 因此,我有一个模型,它有三个外键,接下来,当我试图使用该模型获得响应时,它们在列表中的键中添加了“\u id”-因此每当我序列化,我都会在“错误处得到”keyrerror 错误: class UserSkillUpvotes(models.Model): unique_together = (('user_skill', 'upvote_by'),) skill = models.ForeignKey('Skill',on_de

我检查了所有相关问题,但仍然好奇是否有更新的答案

因此,我有一个模型,它有三个外键,接下来,当我试图使用该模型获得响应时,它们在列表中的键中添加了“\u id”-因此每当我序列化,我都会在“错误处得到”keyrerror

错误:

class UserSkillUpvotes(models.Model):
    unique_together = (('user_skill', 'upvote_by'),)
    skill = models.ForeignKey('Skill',on_delete=models.CASCADE , related_name='all_upvote_for_user_skill')
    upvote_by =  models.ForeignKey('auth.User',on_delete=models.CASCADE , related_name='all_upvote_by_user') 
    upvote_for = models.ForeignKey('auth.User',on_delete=models.CASCADE , related_name='all_upvote_for_user')
class UserSkillUpvotesSerializer(serializers.ModelSerializer):
    class Meta:
        model=UserSkillUpvotes
        fields='__all__'
/api/v1/user/skill/upvows/1“skill”处的键错误

型号:

class UserSkillUpvotes(models.Model):
    unique_together = (('user_skill', 'upvote_by'),)
    skill = models.ForeignKey('Skill',on_delete=models.CASCADE , related_name='all_upvote_for_user_skill')
    upvote_by =  models.ForeignKey('auth.User',on_delete=models.CASCADE , related_name='all_upvote_by_user') 
    upvote_for = models.ForeignKey('auth.User',on_delete=models.CASCADE , related_name='all_upvote_for_user')
class UserSkillUpvotesSerializer(serializers.ModelSerializer):
    class Meta:
        model=UserSkillUpvotes
        fields='__all__'
序列化程序:

class UserSkillUpvotes(models.Model):
    unique_together = (('user_skill', 'upvote_by'),)
    skill = models.ForeignKey('Skill',on_delete=models.CASCADE , related_name='all_upvote_for_user_skill')
    upvote_by =  models.ForeignKey('auth.User',on_delete=models.CASCADE , related_name='all_upvote_by_user') 
    upvote_for = models.ForeignKey('auth.User',on_delete=models.CASCADE , related_name='all_upvote_for_user')
class UserSkillUpvotesSerializer(serializers.ModelSerializer):
    class Meta:
        model=UserSkillUpvotes
        fields='__all__'
查看: 如果request.method==“GET”:

try:
    user_skill_upvotes = list(UserSkillUpvotes.objects.filter(upvote_for=pk).all().values()) # get all upvotes on skills of the requested user
except (UserSkillUpvotes.DoesNotExist,User.DoesNotExist) as e:
    return HttpResponse(status=404)
serializer = UserSkillUpvotesSerializer(user_skill_upvotes,many=True)
return Response(serializer.data)
控制台错误-

File "C:\code\django\wantedly\src\wantedly_webapp\views\AllViews.py", line 75, in user_skill_upvotes
  return Response(serializer.data)

我通过不从对象获取所有值来解决问题。 学习了ORM的基本知识:)

在我看来,我改变了这一行

user_skill_upvotes = list(UserSkillUpvotes.objects.filter(upvote_for=pk).all().values()) # get all upvotes on skills of the requested user
对此

 user_skill_upvotes = list(UserSkillUpvotes.objects.filter(upvote_for=pk))