简体   繁体   English

DRF:“DemoView”应包含“queryset”属性,或覆盖“get_queryset()”方法

[英]DRF : 'DemoView' should either include a `queryset` attribute, or override the `get_queryset()` method

I want to create a serializer without model.我想创建一个没有 model 的序列化程序。

myproject/myapp/views.py:我的项目/我的应用程序/views.py:

from rest_framework import viewsets
from rest_framework.response import Response
from .serializers import DemoSerializer

class DemoView(viewsets.ModelViewSet):
    def get(self, request):
        my_data = [{"name": "Harsha"}, {"name": "Harsha"}]
        results = DemoSerializer(my_data, many=True).data
        return Response(results)

myproject/myapp/urls.py我的项目/我的应用程序/urls.py

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

router = routers.DefaultRouter()
router.register('demo', views.DemoView, basename='Demo')

urlpatterns = [
    path('', include(router.urls)),
]

myproject/myapp/serializer.py我的项目/myapp/serializer.py

from rest_framework import serializers

class DemoSerializer(serializers.Serializer):
    name = serializers.CharField()

When I goto URL: http://localhost:8000/demo/ , it is giving me following error :当我转到 URL: http://localhost:8000/demo/时,出现以下错误

DemoView should either include a queryset attribute, or override the get_queryset() method. DemoView 应该包含一个 queryset 属性,或者覆盖 get_queryset() 方法。

How can I resolve this error?我该如何解决这个错误?

from .models import Demo

class DemoView(viewsets.ModelViewSet):
    def get_queryset(self):
        return Demo.objects.all()

    def get(self, request):
        my_data = [{"name": "Harsha"}, {"name": "Harsha"}]
        results = DemoSerializer(my_data, many=True).data
        return Response(results)

If you don't want to create a model then you should extend viewsets.ViewSet .如果你不想创建 model 那么你应该扩展viewsets.ViewSet

class DemoView(viewsets.ViewSet):

    def get(self, request):
        my_data = [{"name": "Harsha"}, {"name": "Harsha"}]
        results = DemoSerializer(my_data, many=True).data
        return Response(results)

I think you need to customize list method if you inherit from the ModelViewSet .如果您从ModelViewSet继承,我认为您需要自定义list方法。

class DemoView(viewsets.ModelViewSet):
    queryset = Demo.objects.all()

    def list(self, request):
        my_data = [{"name": "Harsha"}, {"name": "Harsha"}]
        results = DemoSerializer(my_data, many=True).data
        return Response(results)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 AssertionError at /api/movies/ 'MovieViewSet' 应该包含一个 `queryset` 属性,或者覆盖 `get_queryset()` 方法 - AssertionError at /api/movies/ 'MovieViewSet' should either include a `queryset` attribute, or override the `get_queryset()` method Django rest 框架,应该能够覆盖 get_queryset 而不是定义 queryset 属性吗? - Django rest framework, should be able to override get_queryset and not define queryset attribute? django 中的 queryset 属性和 get_queryset() 方法的区别? - Difference between queryset attribute and get_queryset() method in django? 覆盖 get_queryset DetailView - override get_queryset DetailView get_queryset不适用于drf RetrieveUpdateDestroyAPIView - get_queryset not working for drf RetrieveUpdateDestroyAPIView 在嵌套循环中重写listview中的get_queryset方法 - Override get_queryset method in listview for nested cycles DRF 在覆盖 get_queryset 时抛出 django.core.exceptions.ImproperlyConfigured - DRF throw django.core.exceptions.ImproperlyConfigured when override get_queryset 试图覆盖视图中的 get_queryset - Trying to override a get_queryset in a view 如何从Django中的get_queryset方法返回多个queryset对象或添加queryset结果 - How to return multiple queryset object or add queryset result from get_queryset method in Django 根据django-guardian权限覆盖get_queryset - Override get_queryset based on django-guardian permissions
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM