Python AttributeError位于/app/api/get

Python AttributeError位于/app/api/get,python,django,django-rest-framework,Python,Django,Django Rest Framework,我犯了个错误, AttributeError位于/app/api/get 尝试获取序列化程序TaskSerializer上的字段task_name的值时获取AttributeError。 序列化程序字段的名称可能不正确,并且与Color实例上的任何属性或键都不匹配。 原始异常文本为:“颜色”对象没有“任务名称”属性 现在我想制作一个页面,以json格式显示模型的内容。 models.py是 from django.db import models # Create your models he

我犯了个错误, AttributeError位于/app/api/get 尝试获取序列化程序TaskSerializer上的字段task_name的值时获取AttributeError。 序列化程序字段的名称可能不正确,并且与Color实例上的任何属性或键都不匹配。 原始异常文本为:“颜色”对象没有“任务名称”属性

现在我想制作一个页面,以json格式显示模型的内容。 models.py是

from django.db import models

# Create your models here.
class Color(models.Model):
    name = models.CharField(max_length=255)
    background_color = models.CharField(max_length=255)
    h1_color = models.CharField(max_length=255)
    p_color = models.CharField(max_length=255)

    def __str__(self):
        return self.name
serializers.py是

from .models import Color
from rest_framework import serializers

class TaskSerializer(serializers.Serializer):
    task_name = serializers.CharField(max_length=100)
    status = serializers.SerializerMethodField('get_task_status')

    def get_task_status(self, instance):
        return instance.status.status

    class Meta:
        model = Color
        fields = ('name',
                  'background_color',
                  'h1_color',
                  'p_color',
                  'task_name')
url.py是

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'api/get',views.TaskGet.as_view(),name='task-get')
]
views.py是

from django.shortcuts import render
from .models import Color
from .forms import ColorForm
from .serializers import TaskSerializer
from rest_framework.views import APIView
from rest_framework.response import Response

from rest_framework import status

# Create your views here.
def index(request):
    d = {
        'colors': Color.objects.all(),
        'form': ColorForm(),
    }
    return render(request, 'index.html', d)

class TaskGet(APIView):
    def get(self, request, format=None):
        obj = Color.objects.all()
        serializers = TaskSerializer(obj, many=True)
        return Response(serializers.data, status.HTTP_200_OK)
我在urls.py中编写了urlr'api/get',views.TaskGet.as_view,name='task-get',所以我真的无法理解为什么会发生这个错误。我已经运行了迁移模型的命令。我怎样才能解决这个问题? 我理想的网页是

您尝试通过外键instance.status.status获取状态,但在模型类颜色中,我看不到任何外键或方法

对于task_name,是否希望看到尝试添加的模型字段名

是否确实要序列化模型颜色的任务

新编辑


在get_task_状态中,“instanceis instance of serializer model,因此如果ModelColorNo property或methodstatus”,您将捕获错误

在问题中包含完整的错误回溯您的模型和序列化程序不一致。当模型被称为颜色时,为什么要调用序列化程序TaskSerializer?这看起来是无意的。我在代码中添加了source='name',因此我的代码是task\u name=serializers.CharFieldmax\u length=100,source='name',但是现在/app/api/get'Color'对象的AttributeError没有发生属性'status'错误。这是否意味着我的代码中有几个错误,一个错误得到了解决?下一步该怎么做?为什么我的模型中需要ForeinKey?我的代码中没有两个或多个模型。我的模型只有一个。您希望通过实例获取哪些信息。status.status来自在哪里?我在一个网站上模拟了一个代码,代码中有get_task_status方法,它的方法返回instance.status.status。所以我认为get_task_status方法是必要的,但我错了吗?我编辑了答案,我想你需要更多地了解python和django。
task_name = serializers.CharField(max_length=100, source='name')
#                                                   ^^^^^^^^^