Django データ作成と更新機能の実装

djangoで便利なモジュールでのログインクラスを使用せずに自前で実装するコードを書きます。

そしてプロフィールを作成はしたものの、更新するにはどうすれば・・・って時に役立つコードです。

CRUD概念の

  • create
  • read
  • update

を習得できます。

開発環境

環境

・Python 3.8

・django 2.2

・OS / Mac

更新するデータの事前準備

データの作成をする

まずはモデルにデータベースを作成します。

問合せ(inquiry)に投稿する、というイメージです。

そのままコピペして使えます。

models.py

作れましたらコンソールで以下のコマンドを実行しましょう。

ヒロヤン
上記コマンドでマイグレーションファイルを生成します。
ヒロヤン
作成されたマイグレーションファイルの内容に基づいてデータベースのテーブルを作成・変更します。

データの入力フォームの作成

こちらはhtml側で、formを作成するのと、データ入力された際のバリデーション(妥当性チェック)をするためのコードです。

そのままコピペして使えます。

forms.py

フロント作成

そのままコピペして反映させれば下記画面のようになります。cssは割愛しています。

※イメージ

inquiry_add.html

上記の入力してPOSTが成功した際の遷移先画面が下記になります。

inquiry_add_success.html

サーバー側の処理

データをsubmitした時の処理をviewsに書きます。

views.py

パスの処理

最後にパスコードの処理を書きます。これで導線ができました。

urls.py

実際に動作実行

実際にデータをポストします。

で起動します。

ここに好きな文言を入力してsubmitボタンをクリックします。

「成功しました」の画面に遷移すれば、データが作成(create)されています。

本題

ここから本題になります。作成されたデータに対して読み込み(read)と更新(update)を実行します。

formの実装

新たにEditInquiryFormというclassを用意します。先ほど作成したforms.pyに下記コードを追記します。

サーバー側の処理2

ここが今回の一番の基幹コードになります。

1つめの注目点としては、まず6行目でqs(query setの略)をデータベースからid=1を指定して取得します。

取得されたデータを9~14行目のitemの辞書型オブジェクトに格納し、それを15行目のEditInquiryFormに(initial=item)を渡します。

こうすることでデータを初期値としてセットすることが可能になります。

2つめの注目点としては、21-23行目でバリデーションされたデータを、20行目で取得したquery setに対して更新作業しているところです。

このように更新したいデータを各々書いていき、最後にinquiry.save()でデータを更新できるようになっています。

フロントコード

フロントコードになります。

index.html

それでは実際に起動をさせて動きをみてみます。

一番の特徴は入力フォーマットに入力し、更新する度に上でデータが更新されていることがわかります。

また同時に入力フォーマットも更新されていることがわかります。

ヒロヤン
いかがでしたでしょうか。全てコピペで動きますので、よくわかんないって人はコピペして色々操作してから動きに慣れてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です