Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AttributeError:type object';ListViewSet';没有属性';获得额外的行动';_Python_Django_Django Rest Framework - Fatal编程技术网

Python AttributeError:type object';ListViewSet';没有属性';获得额外的行动';

Python AttributeError:type object';ListViewSet';没有属性';获得额外的行动';,python,django,django-rest-framework,Python,Django,Django Rest Framework,我正在尝试构建一个scrumboard django应用程序,它基本上包含卡片和列表。我无法解决以下问题 Unhandled exception in thread started by <function check_errors <locals>.wrapper at 0x0000000003DF7C80> Traceback (most recent call last): File "C:\Users\...\lib\site- packages\django

我正在尝试构建一个scrumboard django应用程序,它基本上包含卡片和列表。我无法解决以下问题

Unhandled exception in thread started by <function check_errors 
<locals>.wrapper
at 0x0000000003DF7C80>
Traceback (most recent call last):
File "C:\Users\...\lib\site- 
packages\django\utils\autoreload.py",
line 225, in wrapper
fn(*args, **kwargs)

...
urlpatterns = router.urls
File "C:\Users\...\lib\site- 
packages\rest_framework\routers.py", line 101, in urls
    self._urls = self.get_urls()
File "C:\Users\...\lib\site- 
packages\rest_framework\routers.py", line 363, in get_urls
    urls = super(DefaultRouter, self).get_urls()
File "C:\Users\...\lib\site- 
packages\rest_framework\routers.py", line 261, in get_urls
    routes = self.get_routes(viewset)
File "C:\Users\...lib\site-packages\rest_framework\routers.py", 
line 176, in get_routes
    extra_actions = viewset.get_extra_actions()
AttributeError: type object 'ListViewSet' has no attribute 
'get_extra_actions'
My api.py,其中定义了我的视图集

from rest_framework.viewsets import ModelViewSet
from drf_multiple_model.views import ObjectMultipleModelAPIView
from .serializers import ListSerializer, CardSerializer
from .models import List, Card

class ListViewSet(ModelViewSet):
    queryset = List.objects.all()
    serializer_class = ListSerializer


class CardViewSet(ModelViewSet):
    queryset = Card.objects.all()
    serializer_class = CardSerializer

class ListViewSet(ObjectMultipleModelAPIView):
    querylist = [
        {
            'queryset': List.objects.all(), 
            'serializer_class': ListSerializer
        },
        {
            'queryset': Card.objects.all(), 
            'serializer_class': CardSerializer
        }
    ]
异常所在的URL.py文件

from .api import ListViewSet, CardViewSet
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'lists', ListViewSet, base_name='List')
router.register(r'cards', CardViewSet, base_name='Card')
urlpatterns = router.urls
我是django的新手,我正在教程的帮助下开发这个。我一直在努力寻找解决办法,但我很不幸找到了解决办法,所以我把它贴在了这里

非常感谢

编辑: serializers.py文件

from rest_framework import serializers
from .models import List, Card

class CardSerializer(serializers.ModelSerializer):
    class Meta:
        model = Card
        fields = '__all__'

class ListSerializer(serializers.ModelSerializer):
    class Meta:
        model = List
        fields = '__all__'
版本, Django==2.1.2
djangorestframework==3.8.2

我认为最可能的原因是,
django rest多模型
ObjectMultipleModelAPIView
不是
ViewSet
的子类,而是
GenericAPIView
的子类,而
get\u extra\u actions
方法是在rest框架
ViewSetMixin
class()上定义的


您应该将
ObjectMultipleModelAPIView
更新为
ObjectMultipleModelAPIViewSet
,并希望它能与
DefaultRouter
一起工作。我认为最可能的原因是
django rest多模型
ObjectMultipleModelAPIView
不是
视图集的子类,它是
GenericAPIView
的子类,而
get\u extra\u actions
方法是在rest框架
ViewSetMixin
class()上定义的


您应该将
ObjectMultipleModelAPIView
更新为
ObjectMultipleModelAPIViewSet
,并且它应该能够与
DefaultRouter

一起工作。您可以添加
ListSerializer
类吗?您有两个名为
ListViewSet
的类。这是个问题。此外,您正在使用一个名为
drf\u multiple\u model
的库。您确定正确使用了它吗?如果
ListViewSet
不是
ModelViewSet
的子类,则不能使用
router。向它注册
。@JPG我已经添加了class@HåkenLid感谢您的评论。我试图将两个模型结合起来,得到一个JSONAPI,这就是为什么我要使用“drf_multiple_model”库。我想我没有正确使用那个图书馆。我评论说,代码现在恢复正常了,我将找到其他方法来获取单个JSON api文件。您可能可以使用它,但不能与
路由器一起使用。注册
。相反,为该视图创建一个常规的django路由,并附加到
urlpatterns
列表中。请参阅有关的drf文档。您可以继续使用
路由。为您的ModelViewSet类注册
。是否可以添加
ListSerializer
类?您有两个名为
ListViewSet
的类。这是个问题。此外,您正在使用一个名为
drf\u multiple\u model
的库。您确定正确使用了它吗?如果
ListViewSet
不是
ModelViewSet
的子类,则不能使用
router。向它注册
。@JPG我已经添加了class@HåkenLid感谢您的评论。我试图将两个模型结合起来,得到一个JSONAPI,这就是为什么我要使用“drf_multiple_model”库。我想我没有正确使用那个图书馆。我评论说,代码现在恢复正常了,我将找到其他方法来获取单个JSON api文件。您可能可以使用它,但不能与
路由器一起使用。注册
。相反,为该视图创建一个常规的django路由,并附加到
urlpatterns
列表中。请参阅有关的drf文档。您可以继续使用
路由。为您的ModelViewSet类注册
from rest_framework import serializers
from .models import List, Card

class CardSerializer(serializers.ModelSerializer):
    class Meta:
        model = Card
        fields = '__all__'

class ListSerializer(serializers.ModelSerializer):
    class Meta:
        model = List
        fields = '__all__'