2015-11-04 135 views
0

当试图在串行AthleteSerializer得到一个值场 first_name时,我得到了以下错误了AttributeError的试图获得价值领域的串行

了AttributeError的。序列化程序字段 可能命名错误,并且不匹配实例上的任何属性或键。原始异常文本是:'QuerySet'对象 没有属性'first_name'。

为什么我得到一个错误?

这是我的views.py:

from rest_framework.response import Response 
from rest_framework.views import APIView 
from .models import Athlete 

from athletics.serializers import AthleteSerializer 

class ListAthletes(APIView): 
    def get(self, request, format=None): 
     all_athletes = Athlete.objects.all() 
     import pdb; pdb.set_trace() 
     serializer = AthleteSerializer(all_athletes) 
     return Response(serializer.data) 

这是我serializers.py

from rest_framework import serializers 
from .models import Athlete 

class AthleteSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Athlete 
     fields = (
      'first_name', 
      'last_name' 
     ) 

这是我的models.py:

from django.db import models 

class Athlete(models.Model): 
    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=30) 

回答

1

试试这个:

serializer = AthleteSerializer(all_athletes, many=True) 
+0

如果你不介意我问一个后续问题。如果我想了解任何特定的Django函数和应该传递给它的参数,那么找到它的好地方是什么?当我谷歌我经常最终在djangoproject.com文件,这使得似乎很罗嗦,我必须阅读,才能明白哪些参数可以通过。 – user1283776

+1

@ user1283776,我经常看django文档和stackoverflow问题。 –