ORM

Django ORMでデータを1件取得|get()メソッドの使い方

DjangoのORMでデータベースから1件のデータを取得するには、get()メソッドを使用します。主キーや特定の条件を指定して、該当するレコードをモデルインスタンスとして取得できます。ここでは、get()の基本的な使い方とエラー処理を解説します。

基本的な使い方

views.py
model = Company.objects.get(pk=1)

print(model.name)

説明

Step 1getメソッドによるデータ取得

Djangoでは、以下の形式でモデルからデータを取得することができます:

モデル名.objects.get(取得するモデルの条件)

例えば、特定のIDを持つデータを取得する場合:

company = Company.objects.get(pk=1)

上の例では、Companyモデルのpkが1のデータを取得しています。

ポイント

注意: getメソッドでは、条件に一致するデータが複数ある、データがないときはエラーとなります。

Step 2取得したデータへのアクセス

取得したモデルデータのフィールドには、以下の形式でアクセスすることができます:

モデルを代入した変数.フィールド名

例:

company = Company.objects.get(pk=1)
company_name = company.name
company_address = company.address

この方法で、モデルのすべてのフィールドにアクセスできます。

Step 3様々な条件でのデータ取得

getメソッドでは、様々な条件を指定してデータを取得できます:

# 名前で検索
company = Company.objects.get(name="テスト株式会社")

# 複数条件の組み合わせ
employee = Employee.objects.get(name="山田太郎", department="営業部")

# 大文字小文字を区別しない検索
company = Company.objects.get(name__iexact="test")

# 前方一致検索
company = Company.objects.get(name__startswith="テスト")

# 数値の範囲検索
employee = Employee.objects.get(age__gte=30)  # 30歳以上

条件の指定方法は豊富で、様々なクエリを実現できます。

Step 4エラー処理

getメソッドは条件に合うデータがない場合や、複数ある場合にエラーを発生させます:

try:
    company = Company.objects.get(name="存在しない会社")
except Company.DoesNotExist:
    # データが存在しない場合の処理
    print("該当する会社は見つかりませんでした")
except Company.MultipleObjectsReturned:
    # 条件に一致するデータが複数ある場合の処理
    print("複数の会社が見つかりました")

実際のアプリケーションでは、このようにtry-except文でエラー処理をすることが推奨されます。

ポイント

代替方法: 条件に一致するデータが複数ある可能性がある場合や、データが存在しない可能性がある場合は、filter()メソッドを使用し、結果のリストを確認する方法や、get_object_or_404()を使用する方法も検討してください。

まとめ

  • get()メソッドで条件に合う1件のデータを取得できる
  • pk=値で主キーを指定して取得するのが最も一般的
  • 条件に合うデータがないとDoesNotExistエラーが発生する
  • 複数のデータが該当するとMultipleObjectsReturnedエラーが発生する
  • 実装時はtry-exceptでエラーハンドリングするのが推奨される
  • データが存在しない可能性がある場合はfilter().first()も検討する