AttributeError al usar Django Rest Framework con serializadores

Estoy siguiendo un tutorial que se encuentra aquí que usa el Marco de descanso de Django , y me sigue dando un error extraño sobre un campo.

Tengo el siguiente modelo en mi models.py

 from django.db import models class Task(models.Model): completed = models.BooleanField(default=False) title = models.CharField(max_length=100) description = models.TextField() 

Entonces mi serializador en serializers.py

 from rest_framework import serializers from task.models import Task class TaskSerializer(serializers.ModelSerializer): class Meta: model = Task fields = ('title', 'description', 'completed') 

y mi views.py como sigue:

 from rest_framework import status from rest_framework.decorators import api_view from rest_framework.response import Response from task.models import Task from api.serializers import TaskSerializer @api_view(['GET', 'POST']) def task_list(request): """ List all tasks, or create a new task """ if request.method == 'GET': tasks = Task.objects.all() serializer = TaskSerializer(tasks) return Response(serializer.data) elif request.method == 'POST': serializer = TaskSerializer(data=request.DATA) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) else: return Response( serializer.errors, status=status.HTTP_400_BAD_REQUEST ) 

y mi urls.py tiene esta linea:

 url(r'^tasks/$', 'task_list', name='task_list'), 

Cuando trato de acceder a curl http://localhost:9000/api/tasks/ , sigo recibiendo el siguiente error y no estoy seguro de qué hacer al respecto:

 AttributeError at /api/tasks/ Got AttributeError when attempting to get a value for field `title` on serializer `TaskSerializer`. The serializer field might be named incorrectly and not match any attribute or key on the `QuerySet` instance. Original exception text was: 'QuerySet' object has no attribute 'title'. 

¿Qué me estoy perdiendo?

Simplemente especifique many=True cuando cree un serializador desde queryset, TaskSerializer(tasks) funcionará solo con una instancia de Task :

 tasks = Task.objects.all() serializer = TaskSerializer(tasks, many=True) 

El problema aquí es que está intentando convertir un Queryset (lista) de entradas en una sola entrada. La solución es algo en este sentido.

 from rest_framework import serializers class TaskListSerializer(serializers.ListSerializer): child = TaskSerializer() allow_null = True many = True 

Entonces

 if request.method == 'GET': tasks = Task.objects.all() serializer = TaskListSerializer(tasks) return Response(serializer.data)