簡體   English   中英

django-具有外鍵模型的序列化器中的鍵錯誤

[英]django - key error in serializer with foreign key models

我檢查了所有相關問題,但仍然想知道是否存在更新的答案。

Django序列化外鍵對象

因此,我有一個具有三個外鍵的模型,接下來,當我嘗試使用該模型獲取響應時,它們在List中的鍵會附加“ _id”-因此,每當我進行序列化時 ,都會得到“ 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)

我通過不從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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM