1

そこで、クエリ結果を返すアプリを作成しました。クエリ URL が/query/?A=a&B=b

そして今、結果ページに「並べ替え」ボタンを追加して、ユーザーが結果を時間またはタイプで並べ替えられるようにしたいと考えています。基本的に、ユーザーがアクセスし/query/?A=a&B=b&sorted=timeたり、/query/?A=a&B=b&sorted=type

最も簡単な方法はsorted=、現在の URL の後に追加することです。たとえば<a href = "{{ request.get_full_path }}&sorted=time">、問題は、ユーザーが最初に時間でソートし、次にタイプでソートすると、次のようになることです/query/?A=a&B=b&sorted=type&sorted=time

私はいくつかの派手な文字列操作を行うことができると思いますが、django テンプレート言語でそれを行うことができるかどうかはわかりません。それを行うより良い方法があると思います。GET リクエストを変更してページを更新できる場所があるはずです。

どうもありがとう!

4

2 に答える 2

0

同じ名前の2 つのGET変数はあいまいです。ソートの種類ごとに異なる変数を定義できます。並べ替えには、コンテキストに応じて昇順または降順の 2 つのオプションがあります。ユーザーがデフォルトの並べ替えに戻れるように、これらの値も必要です。

/query/?A=a&B=b&sort_type=asc&sort_time=desc

次に、ビューで:

sort_type = request.GET.get('sort_type', '')
sort_time = request.GET.get('sort_time', '')

qs = MyModel.objects.all()

if sort_type:
    if sort_type == 'asc':
        qs = qs.order_by('type')
    elif sort_type == 'desc':
        qs = qs.order_by('-type')

# same goes with sort_time
# ...
# pass sort_type and sort_type or all get variables in the context to generate url in template

今テンプレートで:

<a href = "{{ request.get_full_path }}?&sort_time={{sort_time}}&sort_type={{sort_type}}">
于 2013-01-23T02:16:57.167 に答える
0

django-tables2 のソリューションを見たいと思うかもしれません (このデータを表に表示している場合は、一般的に django-tables2 を見たいと思うかもしれません)。

于 2013-01-23T03:07:49.617 に答える