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