Koki's personal blog

Koki's personal blog

Another fine, responsive site template by HTML5 UP.

TabularInline (インラインフォーム) の値に初期値を設定

この記事では、TabularInlineを使用し実装するインラインフォームの値に初期値を設定する方法について説明します。

Koki

2 分で読めます

この記事では、TabularInlineを使用し実装するインラインフォームの値に初期値を設定する方法について説明します。

この記事の内容です。

対象読者

  • TabularInlineを使用し実装したインラインフォームの項目の値に初期値を設定したい方

この記事で説明する内容

  • TabularInlineを使用し実装するインラインフォームの項目の値に初期値を設定する方法

この記事で説明しない内容

環境

  • Django (version 3.2.16)

前提条件

  • TabularInlineを使用しインラインフォーム実装済み

インラインフォームに初期値を設定

以下の形でBaseInlineFormSetを継承したInlineFormSetクラスを作成し、
それをTabularInlineクラスを継承したInlineクラスのformsetプロパティに設定します。
これで、インラインフォームの各項目に好きな初期値を設定することができます。
※各クラス名は、実際に使用しているものに読み替えてください。

from django import forms
from django.contrib import admin


# 初期値設定のために、このクラスを作成。
class TestFormInlineFormSet(forms.models.BaseInlineFormSet):
    model = Test

    def __init__(self, *args, **kwargs):
        super(TestFormInlineFormSet, self).__init__(*args, **kwargs)
        if not self.instance.pk:
            # ここで設定する初期値は任意のもの。
            self.initial = [
                {
                    "Modelの項目名": "何かしらの初期値",
                },
            ]


class TestInline(admin.TabularInline):
    model = Test
    formset = TestFormInlineFormSet # ここで、対象のインラインフォームに初期値設定のために作成したインラインフォームセットクラスを設定する。
    # 以降、省略


@admin.register(Test)
class TestForm(admin.ModelAdmin):
    # 省略

    inlines = [TestInline]

    # 省略

最近の投稿

カテゴリー