Tengo una clase de paginación simple del marco de descanso de django:
class StandardResultsSetPagination(PageNumberPagination): page_size = 100 page_size_query_param = 'page_size' max_page_size = 1000 # Create your views here. class ResultSet(generics.ListAPIView): queryset = Result.objects.all() serializer_class = ResultSetSerializer pagination_class = StandardResultsSetPagination Esta clase actualmente devuelve un dict con las teclas 'prev' y 'next' que contiene una URL con la página siguiente y la página anterior. Lo que me gustaría lograr es que 'prev' y 'next' devuelvan solo el número de página en lugar de la URL completa.
¿Cómo puedo conseguir esto?
Puede anular get_next_link y get_previous_link de PageNumberPagination El valor predeterminado es:
def get_next_link(self): if not self.page.has_next(): return None url = self.request.build_absolute_uri() page_number = self.page.next_page_number() return replace_query_param(url, self.page_query_param, page_number) def get_previous_link(self): if not self.page.has_previous(): return None url = self.request.build_absolute_uri() page_number = self.page.previous_page_number() if page_number == 1: return remove_query_param(url, self.page_query_param) return replace_query_param(url, self.page_query_param, page_number)Puede anular:
class StandardResultsSetPagination(PageNumberPagination): page_size = 100 page_size_query_param = 'page_size' max_page_size = 1000 def get_next_link(self): if not self.page.has_next(): return None page_number = self.page.next_page_number() return page_number def get_previous_link(self): if not self.page.has_previous(): return None page_number = self.page.previous_page_number() return page_number