[英]AssertionError at /api/movies/ 'MovieViewSet' should either include a `queryset` attribute, or override the `get_queryset()` method
[英]DRF : 'DemoView' should either include a `queryset` attribute, or override the `get_queryset()` method
我想创建一个没有 model 的序列化程序。
我的项目/我的应用程序/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)
我的项目/我的应用程序/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)),
]
我的项目/myapp/serializer.py
from rest_framework import serializers
class DemoSerializer(serializers.Serializer):
name = serializers.CharField()
当我转到 URL: http://localhost:8000/demo/
时,出现以下错误:
DemoView 应该包含一个 queryset 属性,或者覆盖 get_queryset() 方法。
我该如何解决这个错误?
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)
如果你不想创建 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)
如果您从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.