- views.pyでモデルデータを操作するには?
- 覚えるべきデータベース操作メソッドとは?
本記事ではこのような疑問を解決します。
Djangoのviews.pyでは、ユーザーのリクエストに対してどのような処理を実行するのかを記述します。
中でもデータベースを操作する処理は必ず記述されると言っていいでしょう。
ではviews.pyにおいて、どのような記述(メソッド)でデータベースを操作するのでしょうか。
そこで今回はviews.pyでのデータベース操作をするためのメソッドを解説していきます。
データベース操作メソッドの記述方法
まずはじめにデータベース操作メソッドの記述方法を確認します。
その記述は以下の通りです。
○データベース操作メソッドの記述方法
モデル名.objects.メソッド名(条件指定)
○例
Fruits.objects.get(title="青森のりんご")
→titleフィールドが「青森のりんご」であるオブジェクト(単一)を取得する
覚えるべきデータベース操作メソッド8つ
それでは次から覚えるべきデータベース操作メソッドを説明していきます。
どれもよく使うメソッドであるため1つ1つしっかり押さえましょう。
単体オブジェクトを取得する→get()メソッド
単体オブジェクトを取得する場合は、get()メソッドを使います。
get()メソッドは1つのオブジェクト(レコード)を取得するため、検索条件に合った複数のオブジェクトが取得されそうになった場合はエラーが起こります。
なお、取得するオブジェクトが見つからない場合も同様です。
複数オブジェクトを取得する→filter()メソッド
複数オブジェクトを取得する場合は、filter()メソッドを使います。
filter()メソッドは検索条件に合ったオブジェクトをリスト形式で返します。
全てのオブジェクトを取得する→all()メソッド
全てのオブジェクトを取得する場合は、all()メソッドを使います。
all()メソッドは全てのオブジェクトをリスト形式で返します。
また、all()メソッドはオブジェクトがないモデルを取得しようとしても空のリストを返すため、get()メソッドのようにエラーを起こしません。
条件に合うオブジェクトが存在するかを確認する→exists()メソッド
条件に合うオブジェクトが存在するかを確認する場合は、exists()メソッドを使います。
exists()メソッドは条件に合うオブジェクトが存在すれば「True」、存在しなければ「False」を返します。
exists()メソッドはif文で使われることが多いです。
オブジェクトを保存する→save()メソッド
オブジェクトを保存する場合は、save()メソッドを使います。
オブジェクトが作成されたり更新されたりした場合、保存をしなければ、データベース上、そのオブジェクトの作成と更新はなかったことになります。
つまり、オブジェクトは「作成→保存」「更新→保存」というステップを踏む必要があるのです。
また、この後登場するcreate()メソッドはオブジェクトの「作成→保存」をひとまとまりで担ってくれます。
オブジェクトを作成する→create()メソッド
オブジェクトを作成する場合は、create()メソッドを使います。
ここでの「作成」とはオブジェクトを作成してから保存するまでを指します。
create()メソッドはsave()メソッドのところで説明したようにオブジェクトの「作成→保存」をひとまとまりでやってくれるメソッドです。
そのため、オブジェクトを生成する場合は、変数に代入してsave()メソッドを使うよりも、create()メソッドを使うのが良いでしょう。
オブジェクトを一括更新する→update()メソッド
オブジェクトを一括更新する場合は、update()メソッドを使います。
update()メソッドはfilter()メソッドなどで取得された複数のオブジェクトを入力した条件によって一括更新します。
そのため、get()メソッドで取得した1つのオブジェクトの更新には使えないので注意が必要です。
なお、1つのオブジェクトの更新をする場合は、オブジェクトに値を代入してからsave()メソッドで保存するというステップが必要になります。
オブジェクトを削除する→delete()メソッド
オブジェクトを削除する場合は、delete()メソッドを使います。
delete()メソッドはオブジェクトの形式を問わずにそのオブジェクトの削除をしてくれます。
つまり、get()メソッドやfilter()メソッド、all()メソッドで取得したどんなオブジェクトの削除も可能です。
まとめ
- 単体オブジェクトを取得する
→get()メソッド - 複数オブジェクトを取得する
→filter()メソッド - 全てのオブジェクトを取得する
→all()メソッド - 条件に合うオブジェクトが存在するかを確認する
→exists()メソッド - オブジェクトを保存する
→save()メソッド - オブジェクトを作成する
→create()メソッド - オブジェクトを一括更新する
→update()メソッド - オブジェクトを削除する
→delete()メソッド
Djangoが学べるプログラミングスクールとは?おすすめのDjangoスクールとは? 本記事ではこのような疑問を解決します。DjangoはPythonで作られた中で1番メジャーなWebフレームワークです。みんなが普段利用するYouT[…]