Django概要ユーザーの選択欄を非表示にするフォームセットでのcommit=False概要Djangoでフォームセットを使うシリーズの1つです。通常のモデルフォームと同様に、モデルフォームセット、インラインフォームセットはcommit=Falseで保存ができますが、気を付ける点がいくつかあります。次のようなモデルがあったとしましょう。同様なのですが、userというフィールドが増えています。このuserには、ログインユーザーを紐づけたいとします。この手の処理は通常のモデルフォームでもよくあり、一般的なイディオムです。次のように実装します。request.userfile.save()commit=Falseでsaveメソッドを呼び出し、データベースに保存する前のモデルインスタンスを取得します。request.userとし、そしてsaveメソッドを呼び出し実際に保存します。これをフォームセットでどう行うか、が今回の主題ですが、幾つかの注意点があります。Django、インラインフォームセットの基本的な使い方のコードを基に変更します。ユーザーの選択欄を非表示にするまずですが、ユーザーの選択欄をhtmlとして表示したくないので、excludeに指定しましょう。max_num=5)フォームセットでのcommit=Falseformset.save()の部分を以下の処理に変更します。file.save()フォームセットにもsaveメソッドがあり、commit=Falseという引数も存在します。呼び出すと、データベースへ保存する前のモデルインスタンスのリストが取得できます。formset.save(commit=False)フォームセットのsaveメソッドをcommit=Falseで呼び出した場合の注意点が2つあります。1つが、削除にチェックを入れたデータがあった場合、その削除を手動で行う必要があります。file.delete()もう一つが、保存処理も手動で行う必要があります。file.save()特に削除を手動で行うのは忘れがちなので、注意しましょう。通常のモデルフォームにも言えることですが、ManyToManyFieldが含まれている場合はformset.save_m2m()を呼び出す必要があります。PostsDjangoでフォームセットを使うシリーズDjangoにはフォームセットという、複数のフォームを一括で扱うための機能があります。いくつか種類があり、様々な機能があるので、それらを紹介していきます。シリーズ・まとめDjango、インラインフォームセットの基本的な使い方Djangoでフォームセットを使うシリーズの1つです。今回はインラインフォームセットについてです。記事に添付するファイルがあったとして、記事の作成時に一緒にファイルを複数作ることができるようになります。DjangoComment記事にコメントするまだコメントはありません。幾つかの方法で、ブログの更新を受け取れます。