htmlの中でタブを使って色んなフィルタリングパターンのテーブルを見せるために、
そのパターンごとにデータを渡したかった。
(クライアント側でデータをフィルタリングすることもできるのかもしれないけど面倒くさかった…)
そこでviews.pyの中でこんな風にデータを渡した。
context['topicslist'] = [ context['topics'], context['topics'].filter(Q(isdraft=True)).order_by('-created_at'), context['topics'].filter(Q(isdraft=False)).order_by('-created_at'), ]
context['topics']はobject_listと同じ(全件リスト)。
そこからisdraftのパターンによってフィルタリングしたリストをhtml側のテーブルに渡したかった。
ただ上記を実行しようとすると、
Cannot filter a query once a slice has been taken.
と怒られてしまう。
一度抽出したquerysetからさらに抽出することはできないのか・・・?
しょうがないので、3つともORMで持ってくることに。
context['topicslist'] = [ context['topics'], TopicsTr.objects.select_related().filter(Q(isdraft=True)).order_by('-created_at'), TopicsTr.objects.select_related().filter(Q(isdraft=False)).order_by('-created_at'), ]
これ絶対もっとうまいやり方があるはず。
もうちょっと調べてみよう。