Django:CRUDを実装する【create】DBへのレコード新規登録

Django:CRUDを実装する【create】DBへのレコード新規登録

Django:CRUDを実装する【create】DBへのレコード新規登録

updateよりも難易度は低いです。

save関数の標準動作がInsertであるため、特に工夫を凝らさなくても新規追加してくれます。

プリセットクラスを利用したレコードの新規追加方法

【CreateView】という汎用ビューが存在しています。
このクラスを利用すると新規追加のViewはたった3行の中身で終わります。

Class宣言後の3行はこんな内容です。いやぁ、マジで簡単。

  • 2行目:操作するモデルを指示
  • 3行目:Updateとかと共通で使うFormを指示
  • 4行目:成功した時のJUMP先を指示

PresetClass(汎用ビュー)を利用する場合の問題点

課題となるパーツはUpdateの時と同じです。同じく知見のある方なら難なくクリアできると思います。

  1. update成功時のリダイレクト先(success_url)にページネーションのあるListを設定する
  2. Template.html で呼び出す {{ form }} でレスポンシブデザインを作る
  3. update時のバリデーションエラーが発生する

これらの乗り越え方については前回記事をご参照ください。

関数(def)を使ってCreateを書く

■app/urls.py

■app/views.py

チョット解説

上に載せた views.pyはFormを活用した例です。ゴリゴリ行く場合は9行目~11行目を変更します。

関数で書いた時に悩むところ

  • NULLを入れたいのにNoneが登録される(場合によってはこれが原因でバリデーションエラーになる)

これもUpdateの記事で書いた内容と同じなので、前回記事をご参照ください。

まとめ

Updateを構築できればCreateはわけなく処理できます。Deleteも同じです。

Deleteはobject.delete()だけで処理できてしまいます。

Update書けるようになると悩みませんね。