k2ss.info
Django で FormSet を使う | @K2SS - 日々、邁進
前回に引き続き Django のお話です。 前回と同じプロジェクトのある画面で「サブミットされた複数のフォームに対してバリデーションをかけて、それぞれのフィールドにエラーメッセージを表示する」という内容がありました。 そのプロジェクトはフロントに Vue を利用しており、この画面でも担当者は Vue を使うような実装で対応しようとしていたのですが、以下理由から却下になりました。 原則 Django 側のテンプレートで描画するような方針であること テスト期間中の修正対応であること その画面は原則 Django で作成されており、ここで処理をごっそり Vue に変更するのはリスクが大きいこと その結果、私が Django の FormSet を使うことで対応しました。 今回は FormSet を使った複数フォームの表示・更新処理について記載します。 なお、Django プロジェクトの基本的なセットアップ手順は省略しています(必要に応じてこちらをご覧いただければよいかと思います)。 モデル # app/models.py from django.db import models from django.utils.translation import gettext as _ class Player(models.Model): name = models.CharField( label=_('名前'), ) password = models.CharField( label=_('パスワード'), max_length=8, ) checked = models.BooleanField( label=_('チェック'), ) class Meta: """ モデルのメタ情報 """ db_table = 'players' verbose_name = _('プレイヤー') verbose_name_plural = _('プレイヤーたち') フォーム # app/forms.py from django import forms from django.utils.translation import gettext as _ from app.models import Player class PlayerForm(forms.ModelForm):