LoginSignup
1
0

More than 1 year has passed since last update.

Djangoのobjectsはどんな場合に必要になるか

Posted at

はじめに

先日業務の中でDjangoの仕様であるobjectsにつまづいてしまったので、この機会にobjectsが使える条件など調べた情報をまとめます。
初歩的な内容になってしまうかもしれませんが、知識の確認がてらにでもご覧ください。

そもそも'objects'とは?

このobjectsとはモデルマネージャーと呼ばれるものです。
データベースから任意のデータを操作する際などによく使われます
Djangoでは、モデル名.objectsのようにすると様々なことができます。

具体例

name price
apple 100
orange 100
banana 150
 from app.models import Item

 items = Item.objects.filter(price=100) 

上記ではモデルマネージャーであるobjectsモデルマネージャーのメソッドであるfilter()が連結され、'price'が100である'apple'と'orange'が取り出されています。

objectsが必要な場合

結論

モデルクラスに対してモデルマネージャのメソッドを使う場合です!

具体例

#先ほどと同じ記述です
 from app.models import Item

 items = Item.objects.filter(price=100) 

このように、モデルクラスに対してfilter()メソッドのようなモデルマネージャのメソッドを使うときは
モデルクラス(Item).モデルマネージャ(objects).モデルマネージャのメソッド(filter())
と記述します。

objectsが不要な場合

結論

クエリセットインスタンスに対してモデルマネージャのメソッドを使う場合です!

具体例

1 from app.models import Item

# filter()はクエリセットを返す 
2 items = Item.objects.filter(price=100) 
3 items = items.order_by('name')

二行目の記述でitemsにはfilter()が返したクエリセットインスタンスが代入されています。
このため、三行目では
items.objects.order_by('name')
とする必要がありません。

おまけ

モデルマネージャのメソッドは、クエリセットインスタンスに対して連結して記述できます。

from app.models import Item

# filter()はクエリセットを返すので、order_by()を連結できる 
items = Item.objects.filter(price=100).order_by('name')

参考

【初心者向け】Djangoのモデル操作でobjectsが必要な場合・不要な場合を理解する

Django データベース操作 についてのまとめ

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0