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
linkify
is incompatible with a form field representation, so is disabled;- to ensure 'empty' form fields are rendered,
empty_values
is set to () (i.e., render all values)
-
Install the
django-fmft
package 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-fmft
python manage.py migrate demo
python manage.py loaddata demo/fmft_fixture.json
python 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
$ pytest
or
$ 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