Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mizdb-inlines-0.2.1.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

mizdb_inlines-0.2.1-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file mizdb-inlines-0.2.1.tar.gz.

File metadata

  • Download URL: mizdb-inlines-0.2.1.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for mizdb-inlines-0.2.1.tar.gz
Algorithm Hash digest
SHA256 6f2aae4b8465b9099ef89ad88ec3b8d3e5a2c9950ab4e6c407b0abb4c5460865
MD5 b81b5a356cbc6d4b16067d4d4a3e969a
BLAKE2b-256 b188303073048dc3e401afe6b4a048460054bb81b18a2debf9e3938e6317e82b

See more details on using hashes here.

File details

Details for the file mizdb_inlines-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mizdb_inlines-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8537ac97ebc0bc5d131f2af82e2de53f32fdb4fe750908c418e6de2fbff62da1
MD5 a27e5dae632adcd3313150794e394c7f
BLAKE2b-256 2b579065ac37ed4a92a6cbadbc1442fa2692227bf7dba64f7db92cd0a99d3019

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page