尝试在序列化程序上获取字段值时获得AttributeError

时间:2015-11-04 13:43:27

标签: django serialization

我收到以下错误

  

尝试获取字段值时出现AttributeError   序列化程序first_name上的AthleteSerializer。序列化器字段   可能命名不正确,并且不匹配任何属性或键   QuerySet个实例。原始异常文本是:'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)

2 个答案:

答案 0 :(得分:3)

试试这个:

serializer = AthleteSerializer(all_athletes, many=True)

答案 1 :(得分:2)

Hasan正确指出了很多=正确。 在DRF中的含义是: 由于您的serializer.data将是一个列表,并且列表中的每个项目都需要转换为python数据类型,进而可以轻松地呈现为JSON,XML。 对于登陆此职位的任何人:不要混淆多对多关系。