Been there. Pagination in Django CMS plugin is indeed problematic.
One possible way to solve the problem
- Implement paginated API endpoint for fetching the objects. Use
django.views.generic.list.ListView
for example. It has nice built in pagination. - In CMS plugin, fetch objects from the API endpoint with AJAX. CMS plugin doesn't need to know which objects to render, it just needs to know where it can fetch the objects (the API endpoint).
This approach requires frontend code for fetching the correct objects, updating the UI, keeping track of the current page and so on, but can be (and has been) successfully used to implement paginated Django CMS plugins.