Djangoの並び替えの方法
Djangoで値を並び替えて取得するには、モデルのorder_byメソッドを用いる。
Model.objects.order_by(’column’)
とするとcolumnを用いてレコードを昇順に並び替え値を一覧で取得される。
また、
order_by().reverse()とすると降順に並び替えて取得される。
以下のように利用する
- order_byの基本的な使い方
os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'ProTwo.settings') # djangoのDB接続設定読み込み
import django
django.setup() # djangoのセットアップ
from app.models import User
user_list = User.objects.order_by('first_name') # Userオブジェクトをfirst_nameで昇順にして値を取得(order by first_name)
for user in user_list:
print(user.first_name) # 取得した値の一覧を1つずつ表示
user_list = User.objects.order_by('first_name').reverse()
# Userオブジェクトをfirst_nameで降順にして値を取得(order by first_name desc)
- ランダムに並び替えたい場合は、order_by(?)とする
- 2つのキーを用いてorder byする場合は、カンマ(,)で区切る
- 大文字、小文字に変換してorder_by
user_list = User.objects.order_by(Lower('last_name'))
user_list = User.objects.order_by(Upper('last_name'))
- カラムをつなげてorder_by
user_list = User.objects.order_by(Concat('last_name', 'first_name'))