djqgrid is a Django wrapper for jqGrid.
djqgrid lets you define grids in a Django-familiar way, while taking care of most of the mundane Python-JavaScript bridge for you.
You can find the documents at ReadTheDocs.
Install with
pip install djqgridAdd
djqgridto yourINSTALLED_APPS.Reference the
jqGridandjQueryUIJavaScript and CSS filesReference the script at
{% static "js/djqgrid_utils.js" %}Add the
djqgridURLs tourls.py:urlpatterns += patterns('', url(r^'grid_json/', include (djqgrid.urls))
class MyModel(models.Model):
name = models.CharField(max_length=40)
desc = models.CharField(max_length=100)
url = models.URLField()
height = models.IntField()
class MyGrid(Grid):
model = MyModel
name = TextColumn(title='Name', model_path='name')
height = TextColumn(title='Height', model_path='height', align='right')
desc = LinkColumn(title='Description', model_path='desc', url_builder=lambda m: m.url)
What we have here is a grid associated with MyModel objects - each grid row represents one object. The grid has three columns:
- Name - a basic column containing
model.name - Height - containing
model.height, but right aligned - Description - containing a link - its text will be
model.descand the URL will bemodel.url
One thing to note is align='right' - this property is passed directly to jqGrid in the column's colModel. Any property can be passed to jqGrid this way. For example TextColumn(title=..., model_path=..., editable=true) creates an editable column.
The view:
define myview(request):
grid = MyGrid()
return render(request, 'my_template.html', { grid: grid })
The template:
{% load djqgrid %}
<div id="grid-div">
{% jqgrid grid %}
</div>
Now run the view. You should see a very nice grid that supports paging and sorting.