Skip to main content
# Django Multi. Form View
[![CircleCI](https://circleci.com/gh/TimBest/django-multi-form-view.svg?style=shield)](https://circleci.com/gh/TimBest/django-multi-form-view)
[![codecov](https://codecov.io/gh/timbest/django-multi-form-view/branch/master/graph/badge.svg)](https://codecov.io/gh/timbest/django-multi-form-view)
[![PyPI](https://img.shields.io/pypi/v/django-multi-form-view.svg?maxAge=2592000)](https://pypi.python.org/pypi/django-multi-form-view)

Django class based views for using more than one Form or ModelForm in a single view.

## Install
```bash
$ pip install django-multi-form-view
```

## Usage

### MultiFormView ([Example](demo/base/views.py))
**class multi_form_view.MultiFormView**
A single view that can display multiple Django forms. Handles displaying, redisplaying on error, and
redirects on form success in.

#### Extends
* django.views.generic import FormView

#### Attributes and Methods
* `form_classes`
A dictionary containing to forms for the view.
* `are_forms_valid()`
Check if all forms defined in `form_classes` are valid.
* `forms_valid()`
Redirects to get_success_url().
* `forms_invalid()`
Renders a response containing the form errors.
* `get()`
Render the forms.
* `get_context_data()`
Adds the results of `get_forms()` to the context dictionary with the key `'forms'`.
* `get_forms()`.
Initializes the forms defined in `form_classes` with initial data from `get_initial()` and kwargs
from get_form_kwargs().
* `get_form_kwargs()`.
Build the keyword arguments required to instantiate the form.
* `get_initial()`
Returns a copy of `initial` with empty initial data dictionaries for each form.
* `post()`
Uses `are_forms_valid()` to call either `forms_valid()` or `forms_invalid()`.

### MultiModelFormView ([Example](demo/base/views.py))
**class multi_form_view.MultiModelFormView**
A single view that can display multiple Django ModelForms. Handles displaying, redisplaying on
error, and redirects on form success in.

#### Extends
* multi_form_view.MultiFormView

#### Attributes and Methods
* `forms_valid()`
Calls `save()` on each form.
* `get_forms()`.
Initializes the forms defined in `form_classes` with initial data from `get_initial()`, kwargs
from get_form_kwargs() and form instance object from `get_objects()`.
* `get_objects()`
Returns dictionary with the instance objects for each form. Keys should match the corresponding
form.

## Demo
```bash
$ cd demo
$ pip3 install -r requirements.txt
$ python3 manage.py migrate
$ python3 manage.py runserver
```

## Testing
Install [PhantomJS](http://phantomjs.org/)
```bash
$ python3 demo/manage.py behave
```


Metadata

Release files for django-multi-form-view 2.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-multi-form-view 2.0.1
File Size Uploaded Provenance
django-multi-form-view-2.0.1.tar.gz 3.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for django-multi-form-view 2.0.1
File Interpreter ABI Platform
django_multi_form_view-2.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 19.0 kB

Release files / django-multi-form-view-2.0.1.tar.gz

Download URL django-multi-form-view-2.0.1.tar.gz
Size 3.0 kB
Tags Source
SHA-256 checksum
How to use checksums
40bca9a6841392b10f9c029187f4063ae4f5493792a55d8b4ed4bfa299f608de
BLAKE2b-256 checksum
How to use checksums
2b5d914b79ddf555f9f1fa7d32f849adc749b97f29c203361c1ced2d816a47ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.5.0.1 requests/2.20.0 setuptools/40.7.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.7.0

Release files / django_multi_form_view-2.0.1-py3-none-any.whl

Download URL django_multi_form_view-2.0.1-py3-none-any.whl
Size 16.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
de3a73ec914a7c02cae523ef080eb6024deb319ba5f219d5d1a7091220fbf7f1
BLAKE2b-256 checksum
How to use checksums
7adc960db3e628ae990e950ccd5d3d4cb6e209b7b656008eedd8980c17332d25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.5.0.1 requests/2.20.0 setuptools/40.7.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.7.0

Security for django-multi-form-view 2.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page