django-tables2
2.3

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
    • Disabling 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
  • »
  • 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 SingleTableView, the table will get paginated by default:

class PeopleListView(SingleTableView):
    table = PeopleTable

Disabling pagination¶

If you are using SingleTableView and want to disable the default behavior, set SingleTableView.table_pagination = False

Lazy pagination¶

The default Paginator wants 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, until you’ve hit the last page.

The LazyPaginator does this by fetching n + 1 records where the number of records per page is n. If it receives n or less records, it knows it is on the last page, preventing rendering of the ‘next’ button and further “…” ellipsis. Usage with SingleTableView:

class UserListView(SingleTableView):
    table_class = UserTable
    table_data = User.objects.all()
    paginator_class = LazyPaginator
Next Previous

© Copyright .

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