Skip to main content

Class based views for handling more than one form in a single view

Project description

# 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)
[![PyPI](https://img.shields.io/pypi/dm/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
$ pip install -r requirements.txt
$ python manage.py migrate
$ python manage.py runserver
```

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

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

django-multi-form-view-1.1.tar.gz (3.0 kB view details)

Uploaded Source

File details

Details for the file django-multi-form-view-1.1.tar.gz.

File metadata

File hashes

Hashes for django-multi-form-view-1.1.tar.gz
Algorithm Hash digest
SHA256 43604c9c941aeb01940de4430697f83c705900639d1fd3c729585dcb78e81706
MD5 c8a07c02fd6a4d0f25abeb85f5a50d08
BLAKE2b-256 4b5513c0374a14a39c5a070b7ea5f24718898cc337524d998469057ca5857aca

See more details on using hashes here.

Supported by

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