# Django 3.2.12 documentation

# Editing mixins

The following mixins are used to construct Django’s editing views:

- `django.views.generic.edit.FormMixin`
- `django.views.generic.edit.ModelFormMixin`
- `django.views.generic.edit.ProcessFormView`
- `django.views.generic.edit.DeletionMixin`

Note

Examples of how these are combined into editing views can be found at the documentation on Generic editing views.

## `FormMixin`

class `django.views.generic.edit.``FormMixin`

  A mixin class that provides facilities for creating and displaying forms.

  Mixins

  - `django.views.generic.base.ContextMixin`

  Methods and Attributes

  `initial`

    A dictionary containing initial data for the form.

  `form_class`

    The form class to instantiate.

  `success_url`

    The URL to redirect to when the form is successfully processed.

  `prefix`

    The `prefix` for the generated form.

  `get_initial`()

    Retrieve initial data for the form. By default, returns a copy of `initial`.

  `get_form_class`()

    Retrieve the form class to instantiate. By default `form_class`.

  `get_form`(form_class=None)

    Instantiate an instance of `form_class` using `get_form_kwargs()`. If `form_class` isn’t provided `get_form_class()` will be used.

  `get_form_kwargs`()

    Build the keyword arguments required to instantiate the form.

    The `initial` argument is set to `get_initial()`. If the request is a `POST` or `PUT`, the request data (`request.POST` and `request.FILES`) will also be provided.

  `get_prefix`()

    Determine the `prefix` for the generated form. Returns `prefix` by default.

  `get_success_url`()

    Determine the URL to redirect to when the form is successfully validated. Returns `success_url` by default.

  `form_valid`(form)

    Redirects to `get_success_url()`.

  `form_invalid`(form)

    Renders a response, providing the invalid form as context.

  `get_context_data`(**kwargs)

    Calls `get_form()` and adds the result to the context data with the name ‘form’.

## `ModelFormMixin`

class `django.views.generic.edit.``ModelFormMixin`

  A form mixin that works on `ModelForms`, rather than a standalone form.

  Since this is a subclass of `SingleObjectMixin`, instances of this mixin have access to the `model` and `queryset` attributes, describing the type of object that the `ModelForm` is manipulating.

  If you specify both the `fields` and `form_class` attributes, an `ImproperlyConfigured` exception will be raised.

  Mixins

  - `django.views.generic.edit.FormMixin`
  - `django.views.generic.detail.SingleObjectMixin`

  Methods and Attributes

  `model`

    A model class. Can be explicitly provided, otherwise will be determined by examining `self.object` or `queryset`.

  `fields`

    A list of names of fields. This is interpreted the same way as the `Meta.fields` attribute of `ModelForm`.

    This is a required attribute if you are generating the form class automatically (e.g. using `model`). Omitting this attribute will result in an `ImproperlyConfigured` exception.

  `success_url`

    The URL to redirect to when the form is successfully processed.

    `success_url` may contain dictionary string formatting, which will be interpolated against the object’s field attributes. For example, you could use `success_url="/polls/{slug}/"` to redirect to a URL composed out of the `slug` field on a model.

  `get_form_class`()

    Retrieve the form class to instantiate. If `form_class` is provided, that class will be used. Otherwise, a `ModelForm` will be instantiated using the model associated with the `queryset`, or with the `model`, depending on which attribute is provided.

  `get_form_kwargs`()

    Add the current instance (`self.object`) to the standard `get_form_kwargs()`.

  `get_success_url`()

    Determine the URL to redirect to when the form is successfully validated. Returns `django.views.generic.edit.ModelFormMixin.success_url` if it is provided; otherwise, attempts to use the `get_absolute_url()` of the object.

  `form_valid`(form)

    Saves the form instance, sets the current object for the view, and redirects to `get_success_url()`.

  `form_invalid`(form)

    Renders a response, providing the invalid form as context.

## `ProcessFormView`

class `django.views.generic.edit.``ProcessFormView`

  A mixin that provides basic HTTP GET and POST workflow.

  Note

  This is named ‘ProcessFormView’ and inherits directly from `django.views.generic.base.View`, but breaks if used independently, so it is more of a mixin.

  Extends

  - `django.views.generic.base.View`

  Methods and Attributes

  `get`(request, *args, **kwargs)

    Renders a response using a context created with `get_context_data()`.

  `post`(request, *args, **kwargs)

    Constructs a form, checks the form for validity, and handles it accordingly.

  `put`(*args, **kwargs)

    The `PUT` action is also handled and passes all parameters through to `post()`.

## `DeletionMixin`

class `django.views.generic.edit.``DeletionMixin`

  Enables handling of the `DELETE` http action.

  Methods and Attributes

  `success_url`

    The url to redirect to when the nominated object has been successfully deleted.

    `success_url` may contain dictionary string formatting, which will be interpolated against the object’s field attributes. For example, you could use `success_url="/parent/{parent_id}/"` to redirect to a URL composed out of the `parent_id` field on a model.

  `delete`(request, *args, **kwargs)

    Retrieves the target object and calls its `delete()` method, then redirects to the success URL.

  `get_success_url`()

    Returns the url to redirect to when the nominated object has been successfully deleted. Returns `success_url` by default.