ユーザーがすべての列で並べ替え、検索、フィルタリングできるリーダーボードテーブルを作成するために、django-tables2をいじってみました。私は特別なことは何もしておらず、django-tables2のドキュメントに従っているだけです。
モデルでは次のようになります。
class LeaderboardTable(tables.Table):
rank = tables.TemplateColumn('{{ record.rank }}')
name = tables.TemplateColumn('{{ record.user__first_name }} {{ record.user__last_name }}')
team = tables.TemplateColumn('{{ record.team }}')
points = tables.TemplateColumn('{{ record.points }}')
ビューでは次のように表示されます。
def get_leaderboard(request):
table = LeaderboardTable(Profiles.objects.select_related().all())
RequestConfig(request).configure(table)
return render(request, 'leaderboard.html', {'table': table})
上記のコードを見ると、名前の列が正しくないことに気付くでしょう。クエリセットのフィールドに結合する場合の並べ替え方法がわからないためです。これに答えることができれば、それも素晴らしいことです。
django-tables2がテーブルの作成とページ付けを処理するのが好きです。ただし、sort / nextまたはprevページを押すたびに、ページが更新されます。これを抑制する方法はありますか?また、10,000レコードを返すかどうかはわかりませんが、django-tables2の並べ替えとページングはかなり遅いようです。
私はこれに正しいアプリを使用していますか?あなたたちは私が何か他のものを使うべきだと思いますか?