1

나는 Category과 그 outfits리스트를 모으고 있습니다. 내 문제는 에 속하는 너무 많은 outfits입니다. 사용자가 처음으로 24 outfits을보고 outfits의 나머지 부분을보기 위해 새로 고침 할 수 있도록queryset을 시리얼 화기로 페 이빙하는 방법

class CategoryListAPIView(generics.RetrieveAPIView): 
    serializer_class = CategoryDetailSerializer 
    ... 

class CategoryDetailSerializer(serializers.ModelSerializer): 
    outfits = serializers.SerializerMethodField() 
    ... 

    class Meta: 
     model = Category 
     fields = (
      ... 
      'outfits', 
      ... 
     ) 

    def get_outfits(self, obj): //This is returning 39 items. 
     // Can we paginate this? 
     if obj.outfits is not None: 
      return OutfitListSerializer(obj.outfits, many=True).data 
     return None 

우리는 페이지를 매기는 수 있습니까?

+0

에 대한 /categories/?show_all=true를 얻을 수 있습니다 나는 간단한 해결책이 카테고리하셨습니까 –

+0

에 의해 필터 매김을 얻기 위해 API 메서드를 만들 생각합니다. ..'obj.outfits [offset : (offset + page_size)]'? –

답변

2

간단한 조건 "처음 24"과 "나머지"를 원한다면. 매개 변수를 가져 와서 제어 할 수 있습니다.

def get_outfits(self, obj): 
    show_all = self.request.GET.get('show_all') 

    if show_all: 
     outfits = obj.outfits.all() 
    else: 
     outfits = obj.outfits.all()[:24] 

    return OutfitListSerializer(outfits, many=True).data 

이제 처음 24 개 의상과 범주에 대한 /categories/을 GET 사용하여 전체 표현

+0

나는 이것이 좋은 생각이라고 생각한다. 고마워, 이반. –

+0

@ 존백 당신이 그것을 기쁘게 :) –