Django inline formsets with bootstrap
Project description
mizdb-inlines
Django inline formsets with bootstrap for the MIZDB app.
Requires django_bootstrap5.
Formsets will be rendered in a layout with two columns. One column is for the formset form, and the other column is for the delete button of a given formset form.
Installation
Install using pip:
pip install mizdb-inlines
Add to your INSTALLED_APPS
in your settings.py
:
INSTALLED_APPS = [
...,
"mizdb_inlines",
]
Usage
Add mizdb_inlines/js/mizdb_inlines.js
javascript and render the formset using the inline_formset
template tag from the mizdb_inlines
template tag library:
<!DOCTYPE html>
{% load static mizdb_inlines django_bootstrap5 %}
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My Awesome Form</title>
{{ form.media }}
{{ formset.media }}
<script src="{% static 'mizdb_inlines/js/mizdb_inlines.js' %}"></script>
{% bootstrap_css %}
{% bootstrap_javascript %}
</head>
<body>
<form class="container mt-3" method="post">
{% csrf_token %}
{% bootstrap_form form %}
{% inline_formset formset layout="horizontal" %}
{% bootstrap_button button_type="submit" button_class="success" content="Save" %}
{% bootstrap_button button_type="reset" button_class="warning" content="Reset" %}
</form>
</body>
</html>
View mixin for inline formsets
Use the InlineFormsetMixin
view mixin to remove some of the boilerplate from handling inline formsets.
Simply declare the formset classes to use in the formset_classes
attribute.
from mizdb_inlines.views import InlineFormsetMixin
class MyView(InlineFormsetMixin, UpdateView):
model = Pizza
fields = "__all__"
template_name = "pizza.html"
success_url = "/"
formset_classes = (
inlineformset_factory(Pizza, Toppings, fields="__all__", extra=1),
MyAwesomeFormset,
)
This will add formset instances to the template context with the context variable formsets
.
The combined media of the formsets is available with the variable formset_media
:
{{ formset_media }}
{% for formset in formsets %}
{% inline_formset formset %}
{% endfor %}
Development & Demo
python3 -m venv venv
source venv/bin/activate
make init
See the demo for a preview: run make init-demo
and then start the demo server python demo/manage.py runserver
.
Run tests with make test
. To install required browsers for playwright: playwright install
.
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
File details
Details for the file mizdb-inlines-0.2.0.tar.gz
.
File metadata
- Download URL: mizdb-inlines-0.2.0.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1bb2526b1948607dbc6ca5e641a759f24fd284595105d2528a1be60618fd3be |
|
MD5 | e316b0e0188c5061f81b5e15ccc5b907 |
|
BLAKE2b-256 | 4a47949e5cb04cd02bdd302c716c5592d257d4dc7aba025a3e59bfe38992b718 |
File details
Details for the file mizdb_inlines-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: mizdb_inlines-0.2.0-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c503d26f17bfdfc11da3b0eced96696a2eee62882021b0571976cccc50d78e71 |
|
MD5 | a0c641b8689813041370ea80a4eb8c56 |
|
BLAKE2b-256 | 633bab27d1ede2d720fc3d126cf79498d52632f6e9f8a39d95a3e08f4091d925 |