【Python】DjangoのCreateViewでform_validを使って入力された値を取得して編集する方法

プログラミング

pythonのdjangoには汎用ビューと呼ばれる汎用的な機能を揃えたページを迅速に作れるようになっています。

templateviewやListviewがそうですね。

とても便利ではありますが、いかんせんネット上に情報がなかったので残しておきます。

コード

class ExampleView(CreateView):
    #利用するモデルを指定
    model = ***
    #利用するフォームクラス名を指定     form_class = ***
    #登録処理が正常終了した場合の遷移先を指定
    success_url = reverse_lazy('*****:*****')
    def form_valid(self, form):
        print(self.request.POST.get('モデルのフィールド名'))
        return super().form_valid(form)

おそらくこの記事にたどり着いているような人であれば、モデルの指定やクラスの指定など、汎用ビューの書き方についてはご存知の方が多いと思われますので割愛させていただきます。

使っているモデルやクラス名などはご自分のコードに置き換えてください。

ポイントとなるのは以下の部分

def form_valid(self, form):
        ・・・
        return super().form_valid(form)

ここでdef_form_valid()を使います。self.request.POST.get()でフィールド名を渡すと、入力フォームに入力された値が取得できます。あとはその値を編集するなりして色々してみてください。

以上です。