I use DataTables with serverSide render.
<script> $(document).ready( function () { $('#myTable').DataTable({ "processing": true, "serverSide": true, "ajax": "{% url 'core:persons_json' %}", "columns": [ {"data": "full_name"}, {"data": "email"}, ] }); }); </script> In my views.py i have:
def persons_json(request): persons = Person.objects.all() data = [item.to_dict_json() for item in persons] page = 1 per_page = 10 res = { 'data': data, 'page': page, 'per_page': per_page, 'total': math.ceil(persons.count() / per_page) } return JsonResponse(res) But still he still returns all the persons. And I want to avoid loading a lot of data.
But when i define, for example:
def persons_json(request): length = int(request.GET.get('length')) persons = Person.objects.all()[:length] data = [item.to_dict_json() for item in persons] page = 1 per_page = 10 res = { 'data': data, 'page': page, 'per_page': per_page, 'total': math.ceil(persons.count() / per_page) } return JsonResponse(res) length = int(request.GET.get('length')) is parameter send by serverSide:
http://localhost:8000/person/json/?draw=1&columns%5B0%5D%5Bdata%5D=full_name&columns%5B0%5D%5Bname%5D=&columns%5B0%5D%5Bsearchable%5D=true&columns%5B0%5D%5Borderable%5D=true&columns%5B0%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B0%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B1%5D%5Bdata%5D=email&columns%5B1%5D%5Bname%5D=&columns%5B1%5D%5Bsearchable%5D=true&columns%5B1%5D%5Borderable%5D=true&columns%5B1%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B1%5D%5Bsearch%5D%5Bregex%5D=false&order%5B0%5D%5Bcolumn%5D=0&order%5B0%5D%5Bdir%5D=asc&start=0&length=10&search%5Bvalue%5D=&search%5Bregex%5D=false&_=1568072064631 Note that we have: start=0&length=10.
My question is as follows: when I use this second option. The pagination of other items does not appear in DataTables, ie
I wanted it here
but only one page appears.
Does anyone know how I do to return all pages, and I go clicking each to advance the pages?
