Merge branch 'fix-pagination' into 'master'

[FIX] Count filtered records before applying the limit

See merge request allianceauth/allianceauth!1790
This commit is contained in:
Ariel Rin
2026-01-21 05:23:06 +00:00
2 changed files with 14 additions and 1 deletions

View File

@@ -195,6 +195,9 @@ class DataTablesView(View):
*self.get_order(table_conf)
)
# Get the count after filtering
qs_count = qs.count()
# build output
if length > 0:
qs = qs[start:limit]
@@ -210,7 +213,7 @@ class DataTablesView(View):
datatables_data = {}
datatables_data['draw'] = draw
datatables_data['recordsTotal'] = self.get_model_qs(request, *args, **kwargs).all().count()
datatables_data['recordsFiltered'] = qs.count()
datatables_data['recordsFiltered'] = qs_count
datatables_data['data'] = items
return JsonResponse(datatables_data)

View File

@@ -144,6 +144,16 @@ class TestDataTables(TestCase):
self.assertEqual(data[0][0], "1001")
self.assertEqual(data[19][0], "1020")
def test_records_filtered(self):
self.get_params["length"] = "20"
self.client.force_login(self.user)
request = self.factory.get('/fake-url/', data=self.get_params)
response = TestView()
response.setup(request)
content = json.loads(response.get(request).content)
self.assertEqual(content["recordsFiltered"], 20)
self.assertEqual(content["recordsTotal"], 20)
def test_view_global_search(self):
self.get_params["search[value]"] = "1020"
self.client.force_login(self.user)