Skip to main content
What is it?
===========

django-datatables-view is a base view for handling server side processing for the awesome datatables (http://datatables.net).

django-datatables-view simplifies handling of sorting, filtering and creating JSON output, as defined at:
http://datatables.net/usage/server-side


Usage
=====

1. pip install django-datatables-view

2. views.py:

django_datatables_view uses GenericViews, so your view should just inherit from base class: BaseDatatableView, and override few things.
These are:

* order_columns - list of column names used for sorting (eg. if user sorts by second column then second column name from this list will be used in order by).
* get_initial_queryset - method that should return queryset used to populate datatable
* filter_queryset - if you want to filter your datatable then override this method
* prepare_results - this method should return list of lists (rows with columns) as needed by datatables

See example below:

:::python

from django_datatables_view.base_datatable_view import BaseDatatableView

class OrderListJson(BaseDatatableView):
# define column names that will be used in sorting
# order is important and should be same as order of columns
# displayed by datatables. For non sortable columns use empty
# value like ''
order_columns = ['number', 'user', 'state']

# set max limit of records returned, this is used to protect our site if someone tries to attack our site
# and make it return huge amount of data
max_display_length = 500

def get_initial_queryset(self):
# return queryset used as base for futher sorting/filtering
# these are simply objects displayed in datatable
return MyModel.objects.all()

def filter_queryset(self, qs):
# use request parameters to filter queryset

# simple example:
sSearch = self.request.POST.get('sSearch', None)
if sSearch:
qs = qs.filter(name__istartswith=sSearch)

# more advanced example
filter_customer = self.request.POST.get('customer', None)

if filter_customer:
customer_parts = filter_customer.split(' ')
qs_params = None
for part in customer_parts:
q = Q(customer_firstname__istartswith=part)|Q(customer_lastname__istartswith=part)
qs_params = qs_params | q if qs_params else q
qs = qs.filter(qs_params)
return qs

def prepare_results(self, qs):
# prepare list with output column data
# queryset is already paginated here
json_data = []
for item in qs:
json_data.append([
item.number,
"%s %s" % (item.customer_firstname, item.customer_lastname),
item.get_state_display(),
item.created.strftime("%Y-%m-%d %H:%M:%S"),
item.modified.strftime("%Y-%m-%d %H:%M:%S")
])
return json_data

3. urls.py

Add typical django's clause:

::: python

# ...
url(r'^my/datatable/data/$', login_required(OrderListJson.as_view()), name='order_list_json'),
# ....

4. Define HTML + JavaScript part as usual, eg:

Example JS:

::: javascript

$(document).ready(function() {
var oTable = $('.datatable').dataTable({
// ...
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "{% url order_list_json %}"
});
// ...
});

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-datatables-view-1.4.tar.gz (5.9 kB view details)

Uploaded Source

File details

Details for the file django-datatables-view-1.4.tar.gz.

File metadata

File hashes

Hashes for django-datatables-view-1.4.tar.gz
Algorithm Hash digest
SHA256 15fa19e20eb57c13632a9e5be9831b82a98fbd5137acc8ea6f71610e97a4dbaf
MD5 11a08f384b4e22ce880237bf573fd9e0
BLAKE2b-256 9f16dddfda425982d5d2b95c05f292025d33ab5847bb96ed1fc40b9f8fc605dc

See more details on using hashes here.

Release history Release notifications | RSS feed

1.20.0

2 files

1.19.1

3 files

1.19.0

3 files

1.18.0

3 files

1.17.0

2 files

1.16.0

2 files

1.15.1

2 files

1.15.0

1 file

1.14.0

1 file

1.13.2

1 file

1.13.1

1 file

1.13.0

1 file

1.12.1

1 file

1.12

1 file

1.11

1 file

1.10

1 file

1.9

1 file

1.8

1 file

1.7

1 file

1.6

1 file

1.5

1 file

This release

1.4 This release

1 file

1.3

1 file

1.2

1 file

1.1

1 file

1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page