2017-10-17 2 views
1

Django API에 사용자 정의 페이지 매거기를 추가하려고하지만 get_sdc_data()에서 paginator_class의 페이지 당 항목 수를 어떻게 제한 할 수 있는지 잘 모르겠습니다.Django Tastypie Paginator에서 페이지 당 설정 항목

class CustomApplicationSDCResource(AppMapBaseResource): 
    class Meta(AppMapBaseResource.Meta): 
     #import pdb;pdb.set_trace() 
     queryset = Applications.objects.all() 
     resource_name = 'applications' 
     allowed_methods = {'get'} 
     allowed_models = ['Applications'] 
     paginator_class = Paginator 


    def prepend_urls(self): 
     return [url(r"^(?P<resource_name>%s)/get_sdc_data%s$" % \ 
      (self._meta.resource_name, trailing_slash()), self.wrap_view('get_sdc_data'), name="api_get_sdc_data"), 
     ] 


    def get_sdc_data(self, request, **kwargs): 
     try: 
      sdc_list = [] 
      limit=request.GET.get('limit') 
      next_item = request.GET.get('next') 
      if request.GET.has_key('uaid'): 
       search_uaid=request.GET.get('uaid') 
       sdc_obj = Applications.objects.filter(Q(uaid__contains=search_uaid, status='Active')) 
      else: 
       sdc_obj = Applications.objects.all() 
      exc=['vendor_name', 'ldrps_app_rto','alias_name'] 
      import pdb;pdb.set_trace() 
      sdc_list = [model_to_dict(obj, exclude=exc) for obj in sdc_obj] 
      paginator = self._meta.paginator_class(request.GET, sdc_list, resource_uri=self.get_resource_uri(), \ 
      limit=limit, max_limit=self._meta.max_limit, collection_name=self._meta.collection_name) 
      paginated = paginator.page() 
      paginated['Applications'] = paginated.pop('objects') 
      return self.create_response(request, {"result" : paginated}) 
     except Exception as e: 
      print 'Problem in getting SDC Applications data. Error is ' + str(e) 

답변

0

필터 쿼리 세트를 조각화하는 한 가지 방법이 있습니다.

# Pseudocode 
offset = request.get('offset', 0) 
limit = request.get('limit', 10) 
obj_queryset = Instance.objects.filter(foo=bar)[offset:limit] 

그래서 고객은 페이지 매김 설정을 요구합니다. 희망이 도움이됩니다.