Django クエリを配列で取得する

ケース

クエリを配列で取得する


Djangoでの開発時、クエリを配列で取得したい場合があります。
例えば、特定のデータの存在する全てのIDを取得したい場合などです。

Userデータが5つあり、それらのIDを取得したいとき以下のようにできます。

from django.contrib.auth.models import User

user_ids = list(User.objects.all().values_list('id',flat=True))
print(user_ids)
# 出力結果
[1,2,3,4,5]

余談

values_listはとても便利なメソッドで、複数指定するとタプルでその値を返してくれます。

from django.contrib.auth.models import User

user_ids = list(User.objects.all().values_list('id','username'))
print(user_ids)
# 出力結果
[(1,'user1'),(2,'user2'),(3,'user3'),(4,'user4'),(5,'user5')]

values_listはDjangoのクエリの中でもっとも軽く高速にクエリセットを取得する方法なので、覚えておきましょう!