Cocoon-Engine

甘党インフラエンジニアの技術ブログ

Chocolat Chocolat Chocolat Chocolat

IT技術とスイーツに興味がある方、ちょっと見ていきませんか?

【django】レコードを日付順に並び替える方法(複数条件)

models のデータを日付順に並び替える方法を、同日に複数投稿があった場合も考慮して紹介します。

django でデータを日付順(降順)に並び替えたいときは order_by() と reverse() を使用します。

 

#models.py
class Article(models.Model):
    id = models.AutoField(auto_created=True, primary_key=True)
    date = models.DateField('日時', auto_now_add=True)

 

#views.py
def index(request):
    data = Article.objects.all().order_by('date').reverse()

 

ただし、同日に複数のデータがあった場合、このままだと以下のようになります。

ID 更新日付
3 2023/1/3
4 2023/1/3
5 2023/1/3
2 2023/1/2
1 2023/1/1

 

2023/1/3 のデータを上から ID:5,4,3 となるように変えたいので、order_by のキーに id を追加します。

#views.py
def index(request):
    data = Article.objects.all().order_by('date', 'id').reverse()

 

ID 更新日付
5 2023/1/3
4 2023/1/3
3 2023/1/3
2 2023/1/2
1 2023/1/1

 

想定通りになりました!

ちなみに降順の並び替えは reverse() ではなく order_by のキーの先頭に「-」(= order_by('-date')」 でもいけます。

気に入ったらぜひ共有してください。

TOP