首页 > 解决方案 > RetrieveAPIView 生成错误“函数”对象没有属性“get_extra_actions”

问题描述

我想得到一个唯一的对象,我不需要一个完整的 API,所以我决定使用 generics.RetrieveAPIView 并阅读 DRF 的文档,但是产生了一个错误 extra_actions = viewset.get_extra_actions(), AttributeError: 'function' object has没有属性'get_extra_actions' 我不明白为什么会提到视图集。

from rest_framework.generics import RetrieveAPIView
from ..models import *
from .serializers import *

class DespachoDetail(RetrieveAPIView):
  queryset = Despacho.objects.all()
  serializer_class = DespachoSerializer()

好吧,这是路由文件

from django.urls import include, path
from rest_framework import routers
from .views import *

router = routers.DefaultRouter()
router.register(r'^despacho/<int:pk>', DespachoDetail.as_view(), basename='despacho-detail')
urlpatterns = router.urls

标签: pythondjangodjango-rest-framework

解决方案


而不是继承APIView你必须继承一个ViewSet.

这些改变必须对你有用,

视图.py =>

from rest_framework.viewsets import GenericViewSet
from rest_framework.mixins import RetrieveModelMixin
from ..models import *
from .serializers import *

class DespachoDetail(GenericViewSet, RetrieveModelMixin):
  queryset = Despacho.objects.all()
  serializer_class = DespachoSerializer()

urls.py =>

from django.urls import include, path
from rest_framework import routers
from .views import *

router = routers.DefaultRouter()
router.register(r'^despacho/<int:pk>', DespachoDetail, basename='despacho-detail')
urlpatterns = router.urls

推荐阅读