【问题标题】:django - key error in serializer with foreign key modelsdjango - 具有外键模型的序列化程序中的键错误
【发布时间】:2018-07-02 17:20:47
【问题描述】:

我检查了所有相关问题,但仍然想知道是否有更新的答案。

django serialize foreign key objects

所以,我有一个具有三个外键的模型,接下来当我尝试使用该模型获取响应时,List 中的键会附加“_id” - 所以无论何时serializing ,我收到 "KeyError at" 错误。

错误:

/api/v1/user/skill/upvotes/1 'skill' 处的 KeyError

型号:

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)

【问题讨论】:

    标签: python django serialization


    【解决方案1】:

    我通过不从 Object 获取所有值解决了我的问题。 学习了 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))
    

    【讨论】:

      猜你喜欢
      • 2011-04-30
      • 2021-05-04
      • 2020-02-08
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 2015-10-14
      相关资源
      最近更新 更多