2014-04-08 7 views
6

मैंने पहले अपना परियोजना पर इस दृश्य था पर DjangoModelPermissions लागू नहीं कर सकता:AssertionError: एक राय यह है कि `नहीं है .model` या` .queryset` संपत्ति

from rest_framework import status 
from rest_framework.views import APIView 
from rest_framework.response import Response 
from rest_framework.parsers import JSONParser 
from rest_framework.permissions import IsAuthenticated 


from rest_api.my_app.serializer import MySerializer 
from my_project.models import Bag 


class MyView(APIView): 
    parser_classes = (JSONParser,) 
    queryset = Bag.objects.all() 
    permission_classes = (IsAuthenticated,) 


    @staticmethod 
    def post(self, request, format=None): 
     serializer = MySerializer(data=request.DATA) 
     if serializer.is_valid(): 
      serializer.save(), 
      return Response(serializer.data, status=status.HTTP_201_CREATED) 
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

हालांकि मैं बाद में एहसास हुआ कि मैं जरूरत नहीं थी क्वेरीसमूह और इसलिए मैं उस लाइन और अनुमति और क्वेरीसमूह नष्ट कर दिया साथ रहने के लिए:

from rest_framework import status 
from rest_framework.views import APIView 
from rest_framework.response import Response 
from rest_framework.parsers import JSONParser 


from rest_api.my_app.serializer import MySerializer 


class MyView(APIView): 
    parser_classes = (JSONParser,) 
    @staticmethod 
    def post(self, request, format=None): 
     serializer = MySerializer(data=request.DATA) 
     if serializer.is_valid(): 
      serializer.save(), 
      return Response(serializer.data, status=status.HTTP_201_CREATED) 
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

अगर मैं कोड मैं इस त्रुटि संदेश मिलता है चलाने का प्रयास:

AssertionError: Cannot apply DjangoModelPermissions on a view that does not have  `.model` or `.queryset` property.' 
+0

आपका क्वेरीसमूह होना चाहिए 'क्वेरीसमूह = Bag.objects.all()' – karthikr

+0

मुझे लगता है कि आप लिखने में कोई त्रुटि है: एक ',' 'serializer.save के बाद()' –

+0

यह @Sohan ठीक है क्योंकि यदि – henry12

उत्तर

9

ऐसा इसलिए है क्योंकि आपने allow_classes को हटा दिया है। आप उपयोग कर सकते हैं permission_classes = (IsAuthenticatedOrReadOnly,)

संबंधित मुद्दे