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!
- 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
-
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)
-
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 ..., ]
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
Special thanks to BC Hydro, Chartwell, and all Contributors
This package just glues together the amazing functionality provided by django-filter, django-tables2, and django-extra-views.
Python3, Django, HTML5, CSS3, JavaScript
$ pip install -r reqirements_dev.txt$ pytestor
$ tox$ isort
$ black
$ flake8- Semantic Versioning
$ bumpver show
- invoke
$ invoke -l
- GitHub Actions (see .github/workflows)
- GitHub Webhooks (see settings/hooks)
- 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.
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