---
title: "ミックスイン (mixin) を編集する"
version: 5.2
locale: ja
source: https://docs.djangoproject.com/ja/5.2/ref/class-based-views/mixins-editing/
canonical: https://djangodocs.dev/ja/5.2/ref/class-based-views/mixins-editing/
---
# ミックスイン (mixin) を編集する

以下のミックスイン (mixin) は、Djangoの編集ビューを構築するのに使用されます。

- [`django.views.generic.edit.FormMixin`](#django.views.generic.edit.FormMixin)
- [`django.views.generic.edit.ModelFormMixin`](#django.views.generic.edit.ModelFormMixin)
- [`django.views.generic.edit.ProcessFormView`](#django.views.generic.edit.ProcessFormView)
- [`django.views.generic.edit.DeletionMixin`](#django.views.generic.edit.DeletionMixin)

> **Note**
>
> これらの編集ビューへの結合され方の例は、 [ジェネリック編集ビュー (Generic editing view)](/ja/5.2/ref/class-based-views/generic-editing/) を参照してください。

## `FormMixin`

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

フォームを作成したり表示したりする機能を提供するmixinクラス。

**ミックスイン**

- [`django.views.generic.base.ContextMixin`](/ja/5.2/ref/class-based-views/mixins-simple/#django.views.generic.base.ContextMixin)

**メソッドと属性**

#### `initial`

フォームの初期化データのディクショナリ。

#### `form_class`

インスタンス化するフォームクラス。

#### `success_url`

フォームが正常に処理されたときにリダイレクトするURL。

#### `prefix`

生成されるフォームの [`prefix`](/ja/5.2/ref/forms/api/#django.forms.Form.prefix) 。

#### `get_initial()`

フォームの初期データを取得します。デフォルトでは、 [`initial`](#django.views.generic.edit.FormMixin.initial) のコピーを返します。

#### `get_form_class()`

インスタンス化するフォームクラスを取得します。デフォルトでは [`form_class`](#django.views.generic.edit.FormMixin.form_class) です。

#### `get_form(form_class=None)`

[`get_form_kwargs()`](#django.views.generic.edit.FormMixin.get_form_kwargs) を使用して `form_class` のインスタンスを生成します。 `form_class` が指定されていない場合は [`get_form_class()`](#django.views.generic.edit.FormMixin.get_form_class) が使用されます。

#### `get_form_kwargs()`

フォームのインスタンス化に必要なキーワード引数を構築します。

引数 `initial` には [`get_initial()`](#django.views.generic.edit.FormMixin.get_initial) を指定します。 リクエストが `POST` または `PUT` の場合、リクエストデータ (`request.POST` と `request.FILES`) も提供されます。

#### `get_prefix()`

生成されるフォームの [`prefix`](/ja/5.2/ref/forms/api/#django.forms.Form.prefix) を特定します。 デフォルトでは [`prefix`](#django.views.generic.edit.FormMixin.prefix) を返します。

#### `get_success_url()`

フォームのバリデーションに成功したときにリダイレクトする URL を特定します。 デフォルトでは [`success_url`](#django.views.generic.edit.FormMixin.success_url) を返します。

#### `form_valid(form)`

[`get_success_url()`](#django.views.generic.edit.FormMixin.get_success_url) にリダイレクトします。

#### `form_invalid(form)`

無効なフォームをコンテキストとして提供し、レスポンスをレンダリングします。

#### `get_context_data(**kwargs)`

[`get_form()`](#django.views.generic.edit.FormMixin.get_form) を呼び出して、その結果を "form" という名前でコンテキストデータに追加します。

## `ModelFormMixin`

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

単独のフォームではなく、 `ModelForm` を扱うための機能を提供するフォームミックスインです。

これは [`SingleObjectMixin`](/ja/5.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin) のサブクラスなので、このミックスインのインスタンスは `ModelForm` が操作するオブジェクトのタイプを記述して [`model`](/ja/5.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.model) と [`queryset`](/ja/5.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.queryset) 属性にアクセスできます。

[`fields`](#django.views.generic.edit.ModelFormMixin.fields) 属性と [`form_class`](#django.views.generic.edit.FormMixin.form_class) 属性の両方を指定した場合、 [`ImproperlyConfigured`](/ja/5.2/ref/exceptions/#django.core.exceptions.ImproperlyConfigured) 例外が発生します。

**ミックスイン**

- [`django.views.generic.edit.FormMixin`](#django.views.generic.edit.FormMixin)
- [`django.views.generic.detail.SingleObjectMixin`](/ja/5.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin)

**メソッドと属性**

#### `model`

モデルクラス。明示的に指定することもできますが、そうでない場合は `self.object` または [`queryset`](/ja/5.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.queryset) を調べて決定されます。

#### `fields`

フィールド名のリストです。これは [`ModelForm`](/ja/5.2/topics/forms/modelforms/#django.forms.ModelForm) の `Meta.fields` 属性と同じように解釈されます。

フォームクラスを自動生成する場合、この属性は必須です (`model` を使用するなど)。この属性を省略すると [`ImproperlyConfigured`](/ja/5.2/ref/exceptions/#django.core.exceptions.ImproperlyConfigured) 例外が発生します。

#### `success_url`

フォームが正常に処理されたときにリダイレクトするURL。

`success_url` は辞書文字列のフォーマットを含むことができ、オブジェクトのフィールド属性に対して補間されます。例えば、 `success_url="/polls/{slug}/"` を使用すると、モデルの `slug` フィールドから構成される URL にリダイレクトできます。

#### `get_form_class()`

インスタンス化するフォームクラスを取得します。[`form_class`](#django.views.generic.edit.FormMixin.form_class) が指定されていれば、そのクラスが使用されます。そうでない場合は、 [`queryset`](/ja/5.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.queryset) に関連付けられたモデルか、 [`model`](/ja/5.2/ref/class-based-views/mixins-single-object/#django.views.generic.detail.SingleObjectMixin.model) に関連付けられたモデルを使って `ModelForm` がインスタンス化されます。

#### `get_form_kwargs()`

現在のインスタンス (`self.object`) を標準の [`get_form_kwargs()`](#django.views.generic.edit.FormMixin.get_form_kwargs) に追加します。

#### `get_success_url()`

フォームのバリデーションに成功したときにリダイレクトする URL を特定します。指定されていれば [`django.views.generic.edit.ModelFormMixin.success_url`](#django.views.generic.edit.ModelFormMixin.success_url) を返し、指定されていなければオブジェクトの `get_absolute_url()` を使おうとします。

#### `form_valid(form)`

フォームインスタンスを保存し、ビューのカレントオブジェクトを設定し、 [`get_success_url()`](#django.views.generic.edit.FormMixin.get_success_url) にリダイレクトします。

#### `form_invalid(form)`

無効なフォームをコンテキストとして提供し、レスポンスをレンダリングします。

## `ProcessFormView`

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

基本的な HTTP GET および POST ワークフローを提供するミックスインです。

> **Note**
>
> これは "ProcessFormView" という名前で、 [`django.views.generic.base.View`](/ja/5.2/ref/class-based-views/base/#django.views.generic.base.View) を直接継承していますが、単独で使用すると壊れてしまうので、ミックスインとして扱う方が自然です。

**親クラス**

- [`django.views.generic.base.View`](/ja/5.2/ref/class-based-views/base/#django.views.generic.base.View)

**メソッドと属性**

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

[`get_context_data()`](#django.views.generic.edit.FormMixin.get_context_data) で作成したコンテキストを使ってレスポンスをレンダリングします。

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

フォームを構築し、フォームのバリデーションを行い、それに応じて処理します。

#### `put(*args, **kwargs)`

`PUT` アクションも処理され、すべてのパラメータを [`post()`](#django.views.generic.edit.ProcessFormView.post) に渡します。

## `DeletionMixin`

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

HTTP アクション `DELETE` の処理を有効にします。

**メソッドと属性**

#### `success_url`

指定したオブジェクトが正常に削除されたときにリダイレクトする URL。

`success_url` は辞書文字列のフォーマットを含むことができ、オブジェクトのフィールド属性に対して補間されます。例えば、 `success_url="/parent/{parent_id}/"` を使用すると、モデルの `parent_id` フィールドから構成される URL にリダイレクトできます。

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

対象のオブジェクトを取得し、その `delete()` メソッドを呼び出して、success URL にリダイレクトします。

#### `get_success_url()`

指定したオブジェクトが正常に削除された場合にリダイレクトする URL を返します。デフォルトでは [`success_url`](#django.views.generic.edit.DeletionMixin.success_url) を返します。
