django-tables2
2.0

Getting started

  • Installation
  • Tutorial
  • Populating a table with data

Customization

  • Alternative column data
  • Alternative column ordering
  • Column and row attributes
  • Customizing headers and footers
  • Swapping the position of columns
  • Pagination
    • Lazy pagination
  • Table Mixins
  • Customizing table style
  • Query string fields
  • Controlling localization
  • Class Based Generic Mixins
  • Pinned rows
  • Filtering data in your table
  • Exporting table data

Reference

  • API
  • FAQ
  • Upgrading and change log
  • Glossary
django-tables2
  • Docs »
  • Pagination
  • View page source

Pagination¶

Pagination is easy, just call Table.paginate() and pass in the current page number:

def people_listing(request):
    table = PeopleTable(Person.objects.all())
    table.paginate(page=request.GET.get('page', 1), per_page=25)
    return render(request, 'people_listing.html', {'table': table})

If you are using RequestConfig, pass pagination options to the constructor:

def people_listing(request):
    table = PeopleTable(Person.objects.all())
    RequestConfig(request, paginate={'per_page': 25}).configure(table)
    return render(request, 'people_listing.html', {'table': table})

If you are using a class based view mixin, specify paginate_by in your class:

class PeopleCBV(SingleTableView):
    paginate_by = 10

Lazy pagination¶

The default Paginator want to count the number of items, which might be an expensive operation for large QuerySets. In those cases, you can use LazyPaginator, which does not perform a count, but also does not know what the total amount of pages will be. It will always fetch the number of records for the page plus one. If the number of records returned is equal to or smaller than the configured number of records per page, it nows that the current page is the last page, and will make sure the next button is not rendered.

Usage with SingleTableView:

class UserListView(SingleTableView):
    table_class = UserTable
    table_data = User.objects.all()
    table_pagination = {
        "klass": LazyPaginator
    }
Next Previous

© Copyright .

Built with Sphinx using a theme provided by Read the Docs.