主要なモデルのいくつかと、日付の降順でソートされた (集約された) エントリをページ分割するための管理ビューに対して、小さな履歴監査証跡 ( django-simple-history ) を設定しました。問題は、私が使用している方法が最適ではないことです...
historical_foo = Foo.history.all()
historical_bar = Bar.history.all()
historical_qux = Qux.history.all()
#sort the aggregate by modified date
result_list = sorted(chain(historical_foo, historical_bar, historical_qux), key=attrgetter('history_date'), reverse=True)
paginator = Paginator(result_list, 100)
try:
result = paginator.page(page_num)
#...
これらのテーブルが大きくなるため、これは確かにうまくスケーリングしません。集計とソートのロジックを Django / DB にプッシュする方法、または同じ結果を得るための代替アプローチはありますか?