Django Filtered Model Formset Tables
Re-usable Class-Based Views that integrate django-filter and django-tables2 with model formsets. Render and process a user-filterable, user-sortable modelformset in a table with just a few lines of code. Rainbows and unicorns!
Features
Use a ModelForm / formset to define editable fields, add / delete, extra forms, etc.
Use a FilterSet to define filters the formset’s queryset
Use a Table to lay out the formset, define paging, sorting, etc.
Render the Table with its filtered formset in just a few lines of template code
Views
FilteredTableView
Mixes FilterView with SingleTableMixin for views that Filter tabular data.
FilteredModelFormsetView
Integrates FilterView with ModelFormsetView for views that Filter the queryset used by a formset
ModelFormsetTableView
Integrates ModelFormsetView with SingleTableMixin for views that render a formset in a Table.
FilteredModelFormsetTableView
Integrates FilterView, ModelFormsetView, and SingleTableMixin for views that Filter the queryset used by a formset and render the formset in a Table.
Note:
Table.Column options linkify and empty_values are overridden for columns
rendered as form fields
linkifyis incompatible with a form field representation, so is disabled;to ensure ‘empty’ form fields are rendered,
empty_valuesis set to () (i.e., render all values)
Quick Start
Install the
django-fmftpackage from PyPI$ pip install django-fmft
For other installation methods see Installation.
Add
'fmft'toINSTALLED_APPS:INSTALLED_APPS = [ ..., "fmft", "django_tables2", "django_filters", "extra_views", # optional ..., ]
Get Me Some of That
Check Out the Demo App
pip install -e git+https://github.com/powderflask/django-fmft.git#egg=django-fmftpython manage.py migrate demopython manage.py loaddata demo/fmft_fixture.jsonpython manage.py runserver
Acknowledgments
Special thanks to BC Hydro, Chartwell, and all Contributors
Technology Colophon
This package just glues together the amazing functionality provided by django-filter, django-tables2, and django-extra-views.
Python3, Django, HTML5, CSS3, JavaScript
For Developers
$ pip install -r reqirements_dev.txt
Tests
$ pytest
or
$ tox
Code Style / Linting
$ isort
$ black
$ flake8
Versioning
-
$ bumpver show
Docs
Build / Deploy Automation
-
$ invoke -l
Known Issues
hidden form fields are rendered in first form field column - can’t have dynamically hidden fields, hidden on some rows while visible in others, without a little magic.
TODO
My wish list…
write test for case where form field is not included in table E.g. as when DELETE field not included in export table