# Django 5.2.8 ドキュメント

# ミックスイン (mixin) を編集する

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

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

- `django.views.generic.edit.ModelFormMixin`

- `django.views.generic.edit.ProcessFormView`

- `django.views.generic.edit.DeletionMixin`

注釈

これらの編集ビューへの結合され方の例は、 ジェネリック編集ビュー (Generic editing view) を参照してください。

## `FormMixin`

class django.views.generic.edit.FormMixin

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

  ミックスイン

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

  メソッドと属性

  initial

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

  form_class

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

  success_url

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

  prefix

    生成されるフォームの `prefix` 。

  get_initial()

    フォームの初期データを取得します。デフォルトでは、 `initial` のコピーを返します。

  get_form_class()

    インスタンス化するフォームクラスを取得します。デフォルトでは `form_class` です。

  get_form(form_class=None)

    `get_form_kwargs()` を使用して `form_class` のインスタンスを生成します。 `form_class` が指定されていない場合は `get_form_class()` が使用されます。

  get_form_kwargs()

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

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

  get_prefix()

    生成されるフォームの `prefix` を特定します。 デフォルトでは `prefix` を返します。

  get_success_url()

    フォームのバリデーションに成功したときにリダイレクトする URL を特定します。 デフォルトでは `success_url` を返します。

  form_valid(form)

    `get_success_url()` にリダイレクトします。

  form_invalid(form)

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

  get_context_data(**kwargs)

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

## `ModelFormMixin`

class django.views.generic.edit.ModelFormMixin

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

  これは `SingleObjectMixin` のサブクラスなので、このミックスインのインスタンスは `ModelForm` が操作するオブジェクトのタイプを記述して `model` と `queryset` 属性にアクセスできます。

  `fields` 属性と `form_class` 属性の両方を指定した場合、 `ImproperlyConfigured` 例外が発生します。

  ミックスイン

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

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

  メソッドと属性

  model

    モデルクラス。明示的に指定することもできますが、そうでない場合は `self.object` または `queryset` を調べて決定されます。

  fields

    フィールド名のリストです。これは `ModelForm` の `Meta.fields` 属性と同じように解釈されます。

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

  success_url

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

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

  get_form_class()

    インスタンス化するフォームクラスを取得します。`form_class` が指定されていれば、そのクラスが使用されます。そうでない場合は、 `queryset` に関連付けられたモデルか、 `model` に関連付けられたモデルを使って `ModelForm` がインスタンス化されます。

  get_form_kwargs()

    現在のインスタンス (`self.object`) を標準の `get_form_kwargs()` に追加します。

  get_success_url()

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

  form_valid(form)

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

  form_invalid(form)

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

## `ProcessFormView`

class django.views.generic.edit.ProcessFormView

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

  注釈

  これは "ProcessFormView" という名前で、 `django.views.generic.base.View` を直接継承していますが、単独で使用すると壊れてしまうので、ミックスインとして扱う方が自然です。

  親クラス

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

  メソッドと属性

  get(request, *args, **kwargs)

    `get_context_data()` で作成したコンテキストを使ってレスポンスをレンダリングします。

  post(request, *args, **kwargs)

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

  put(*args, **kwargs)

    `PUT` アクションも処理され、すべてのパラメータを `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` を返します。