In thnis short post I would like to let you know about the great projectdjango-tables.
You can read more about it at:
http://blog.elsdoerfer.name/2008/07/09/django-tables-a-queryset-renderer/
In a couple of words it lets you:
- display the table using one template which lets you sort & paginate easily (filtering in plans!)
By reading the text below you will find out how to create table with sort & pagination quickly.
In usage it's very similar do django newforms (forms as of 1.0)
Example: (views.py)
class MyTable(tables.ModelTable): class Meta: model = SomeModel def view_something(request): table = MyTable(queryset, order_by=request.GET.get('sort','some_field)) return render_to_response('templates/table.html', {'table': table, 'rows' : table.rows}) # we need to return table, and rows separately to use django-pagination (though django-tables provides its own pagination mechanism)
Now let's get to template:
{% load pagination_tags %} {% autopaginate rows 10 %} {% for column in table.columns %} {% endfor %} {% for row in rows %} {% for value in row %} {% endfor %}
{% if column.sortable %} {{ column }} {% if column.is_ordered_reverse %} {% else %} {% endif %} {% else %} {{ column }} {% endif %} | |
---|---|
{{ value }} | {% endfor %} |
That's it!
This way you get generic way of displaying tables + sorting ability.
By default, django-tables takes field names for table headers when using ModelTable (verbose_name is in plans as well).
You can exclude displaying fields too!
As for now, you can specify your own names in MyTable class.
Let's get back to our class:
class MyTable(tables.ModelTable): class Meta: model = SomeModel field1 = tables.Column(name="Name") field_we_want_to_exclude = tables.Column(visiable=Fale, sortable=False)
NOTE:
Django tables is also aware of ForeignKey relations.
Check it out!
3 comments:
Have you tried doing something similar to this?:
{% with table.rows as rows %}
{% autopaginate rows %}
{% for row in rows %}
...
{% endfor %}
{% paginate %}
{% endwith %}
Hello,
Nope.
I found django-sorting + django-pagination easier to use for that purpose.
Nice post and this post helped me alot in my college assignement. Gratefulness you seeking your information.
Post a Comment