Django Rest Framework与序列化程序结合使用时发生AttributeError [英] AttributeError while using Django Rest Framework with serializers

查看:122
本文介绍了Django Rest Framework与序列化程序结合使用时发生AttributeError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在遵循此处使用< a href = http://www.django-rest-framework.org/> Django Rest Framework ,我不断收到有关字段的奇怪错误。

I am following a tutorial located here that uses Django Rest Framework, and I keep getting a weird error about a field.

我的 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()

然后在 serializers.py

from rest_framework import serializers

from task.models import Task

class TaskSerializer(serializers.ModelSerializer):

    class Meta:
        model = Task
        fields = ('title', 'description', 'completed')

和我的 views.py 如下所示:

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
                )

并且我的urls.py有这行:

and my urls.py has this line:

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

当我尝试访问 curl http:// localhost:9000 / api / tasks / ,我不断收到以下错误,我不确定该怎么做:

When I try accessing curl http://localhost:9000/api/tasks/, I keep getting the following error and I'm not sure what to make of it:

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'.

我想念的是什么?

推荐答案

从查询集 TaskSerializer(tasks) many = True $ c>仅适用于 Task 的一个实例:

Simple specify many=True when creating a serializer from queryset, TaskSerializer(tasks) will work only with one instance of Task:

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

这篇关于Django Rest Framework与序列化程序结合使用时发生AttributeError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆