update queryset framework create python django serialization django-rest-framework django-1.7

python - queryset - extra kwargs django rest



AttributeError al utilizar Django Rest Framework con serializadores (2)

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)

Estoy siguiendo un tutorial que se encuentra here que utiliza 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 intento acceder a curl http://localhost:9000/api/tasks/ , sigo recibiendo el siguiente error y no estoy seguro de qué hacer con él:

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)