Skip to content

Commit 37f9d64

Browse files
authored
Merge pull request #46 from CarlosBorroto/show-all-pagination
Add support for disabling pagination (aka show all)
2 parents 464dae6 + 5cbfc00 commit 37f9d64

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

example/example/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,5 +138,5 @@
138138
'rest_framework_datatables.filters.DatatablesFilterBackend',
139139
),
140140
'DEFAULT_PAGINATION_CLASS': 'rest_framework_datatables.pagination.DatatablesPageNumberPagination',
141-
'PAGE_SIZE': 50,
141+
'PAGE_SIZE': 10,
142142
}

rest_framework_datatables/pagination.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@ def paginate_queryset(self, queryset, request, view=None):
4242
return super(
4343
DatatablesPageNumberPagination, self
4444
).paginate_queryset(queryset, request, view)
45-
if request.query_params.get('length') is None:
45+
46+
length = request.query_params.get('length')
47+
48+
if length is None or length == '-1':
4649
return None
4750
self.count, self.total_count = self.get_count_and_total_count(
4851
queryset, view

tests/test_api.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,15 @@ def test_datatables_suffix(self):
4141

4242
def test_pagenumber_pagination(self):
4343
response = self.client.get('/api/albums/?format=datatables&length=10&start=10&columns[0][data]=name&columns[1][data]=artist_name&draw=1')
44-
expected = (15, 15, 'Elvis Presley')
44+
expected = (15, 15, 5, 'Elvis Presley')
4545
result = response.json()
46-
self.assertEquals((result['recordsFiltered'], result['recordsTotal'], result['data'][0]['artist_name']), expected)
46+
self.assertEquals((result['recordsFiltered'], result['recordsTotal'], len(result['data']), result['data'][0]['artist_name']), expected)
47+
48+
def test_pagenumber_pagination_show_all(self):
49+
response = self.client.get('/api/albums/?format=datatables&length=-1&columns[0][data]=name&columns[1][data]=artist_name&draw=1')
50+
expected = (15, 15, 15, 'The Beatles')
51+
result = response.json()
52+
self.assertEquals((result['recordsFiltered'], result['recordsTotal'], len(result['data']), result['data'][0]['artist_name']), expected)
4753

4854
def test_pagenumber_pagination_invalid_page(self):
4955
response = self.client.get('/api/albums/?format=datatables&length=10&start=20&columns[0][data]=name&columns[1][data]=artist_name&draw=1')

0 commit comments

Comments
 (0)