Django

Django、モデルのget_or_createの使い方をまとめました

get_or_createの使い方

Djangoのget_or_createを使うと、オブジェクトが存在しない場合はDBにオブジェクトを登録して登録した値を返し、オブジェクトが存在する場合にはDBにオブジェクトを登録せずに値を返します

以下のように利用します。

result, created = Model.objects.get_or_create(**kwargs)

もし、kwargsに指定したパラメータが存在した場合は、DBにオブジェクトを登録せず、createdにはFalseが返されます。resultには指定したModelのオブジェクトが返ってきます。

実際に例を見ていきます

  • Userモデル
  • get_or_create

また、get_or_create()で値を取得した場合に、選択条件で複数のオブジェクトが返された時、MultipleObjectsReturnedエラーが返されます。

  • MultipleObjectsReturnedエラー

get_or_createの応用(filter)

最後に、get_or_createの応用的な使い方について説明します。

fileter関数とdjango.db.modelsパッケージのQクラスを用いて、モデルの一部を抽出して、その中に値がない場合は登録し、ある場合は、登録せずそのまま値を返します。

以下のように利用します。

result, created = Model.objects.filter(Q=filter).get_or_create(**kwargs)

↓↓Pythonについてもっと知りたい!というかたはこちら、Pythonの基本文法から標準ライブラリ、応用ライブラリまで収録!!

【2020年版】: Python 3.8 データ構造、文法、アルゴリズム、オブジェクト指向、ライブラリ、完全マスター講座