Extension for django_tables2 can dynamically show or hide columns
Project description
django-tables2-column-shifter
About the app: Simple extension for django-tables2 to dynamically show or hide columns using jQuery. Application uses web storage to store information whih columns are visible or not. Using JQuery, Bootstrap3 and Django >=1.9.
Tested by tox with:
Python :2.7, 3.4
Django : 1.9, 1.10
django-tables2 : 1.1.0, 1.1.1, 1.1.2, 1.1.4, 1.1.7, 1.1.8, 1.2.0, 1.2.1, 1.2.2, 1.2.3, 1.2.6
Require:
Django 1.9 or Django 1.10
django-tables2 >= 1.1.0 (earlier versions propably will work but not tested)
bootstrap3
JQuery
Supported locale:
EN - (english)
PL - (polish)
More informaton about django-tables in here: https://django-tables2.readthedocs.io/
Screens:
How Install:
Install django-tables2-column-shifter using:
**SORY : package not yet in pypi repository** pip install django-tables2-column-shifter or pip install git+https://github.com/djk2/django-tables2-column-shifter or pip install django-tables2-column-shifter.zip or pip install django-tables2-column-shifter.tar.gz
Add django_tables2_column_shifter to your INSTALLED_APPS setting (after django_tables2) like this
INSTALLED_APPS = [ ..., 'django_tables2', 'django_tables2_column_shifter', ..., ]
Add path to js script: django_tables2_column_shifter.min.js to your base django template. Script must be add after jquery.js and should be add befor end body tag
base.html {% load static %} <body> ... ... <script src="{% static "jquery.min.js" %}"></script> {# require #} <script type="text/javascript" src="{% static "django_tables2_column_shifter/js/django_tables2_column_shifter.min.js" %}"> </script> </body>
Usage:
To use app, you only must inherit yout table class from django_tables2_column_shifter.ColumnShiftTable:
models.py - create normal model like in django_tables2 from django.db import models class MyModel(models.Model): first_name = models.CharField("First name", max_length=50) last_name = models.CharField("Last name", max_length=50) tables.py - change inherit on ColumnShiftTable from django_tables2_column_shifter import ColumnShiftTable from app.models import MyModel # Default you inherit from django_table2.Table # Change inherit to ColumnShiftTable class MyModelTable(ColumnShiftTable): class Meta: model = MyModel views.py - In your view, nothing changes from .tables import MyModelTable from .models import MyModel def simple_list(request): queryset = MyModel.objects.all() table = MyModelTable(queryset) return render(request, 'template.html', {'table': table}) template.html - use default render_table tag to display table object (using bootstrap3) {% extends "base.html" %} {% load django_tables2 %} {% render_table table %}
Warnings:
Warning : - If you use {% render_table %} tag with queryset, not table class instance, django-tables2-column-shifter will not be work because queryset has no attribute template:
{% load django_tables2 %} {% render_table queryset %} {# not work #}
Warning : - If you use a different template than django_tables2_column_shifter/table.html to render your table, propably django-tables2-column-shifter will not be work. Your custom template should inherit from django_tables2_column_shifter/table.html
Customizing:
If you use more then one instance of the same Table class in your view/template, you should use a different prefix for each instance:
tab1 = MyModelTable(queryset, prefix='tab1') tab2 = MyModelTable(queryset, prefix='tab2') tab3 = MyModelTable(queryset, prefix='tab3')
To disable shifter mechanism - set False to shift_table_column in your table class (default value is True):
class MyModelTable(ColumnShiftTable): shift_table_column = False ...
Default, all columns from sequence are visible, if you want to limit the visible columns, override method get_column_default_show(self) like that:
class MyModelTable(ColumnShiftTable): def get_column_default_show(self): self.column_default_show = ['column1', 'column2'] return super(MyModelTable, self).get_column_default_show()
Run demo:
Download or clone project from https://github.com/djk2/django-tables2-column-shifter:
git clone https://github.com/djk2/django-tables2-column-shifter.git
Go to testproject directory:
cd django-tables2-column-shifter/testproject
Install requirements:
pip install -r requirements.txt
Run django developing server:
python manage.py runserver
Links:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-tables2-column-shifter-0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7385854f24df65aaf7c3e014dccc9dbdd04adebdd555279d13aae10392abbd8 |
|
MD5 | b4aab8c20b25b4e312f732e5a98335b7 |
|
BLAKE2b-256 | 7997e2aeb41922f3b185b1257bc313d2844c74033ae4e0f78505e7432dcc2d06 |
Hashes for django_tables2_column_shifter-0.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ee8518a4c4a155cfae82a4745c2e4424f090b7903d05e980b00d7ea3e117b96 |
|
MD5 | d3bbe6f1c4ffa56be1805fa48526bf96 |
|
BLAKE2b-256 | d8facfeb22e02f901c6d068f212d40f18e63c18bb7e0574dcb7ddf9ccd625a90 |