2011-06-28 5 views
1

私はフィルタを使用したい多くのプロパティを持つモデルを持つリストサイトを持っています。私は、例えば、照会のためにmemcacheのカーソルを使用したい:Googleのアプリケーションエンジンでクエリを変更するユーザーを処理する方法

私は、例えば、ユーザは、フィルタ条件を変更するカーソルや改ページを、どのように処理するか
results=Model.all().filter("x =", a).filter("y =",b).with_cursor(cursor).fetch(20). 

from `x=a to x=c`? 

キー=クエリ文字列を持つカーソルを保存する必要がありますか?しかし、クエリ文字列はページ番号で変更されます。(私はクエリ文字列を解析し、ページ番号を削除して、カーソルのキーとして使用する必要があると思います)

答えて

0

あなたの現在のフィルタの「ハッシュ」と表示し、それを渡す。隠しフィールドとしてそこストアすることができ、<input type="hidden" name="prev_query" value="{{query_hash}}"/>

状の第2の要求では、あなたは、現在のフィルタのハッシュは、パラメータとして渡されたに等しいことを確認します。

'Hash'はフィルタパラメータのmd5であるか、またはそれらの連結に参加するだけです。

+0

実際にはハッシュする必要はありません。ユーザーはいずれのリクエストでもクエリパラメータを送信しています。ただし、これを行う場合は、隠しフィールドにカーソル自体を保存する方がよいでしょう。 –

+0

私はカーソルが既に格納されており、パラメータとして渡されていると理解しています。クエリが変更されたが、以前のクエリからカーソルを使用しようとする問題。ではない? –

+0

@splixカーソルがクエリと一緒に渡されている場合、最初に間違ったカーソルを使用する機会はありません。 –

0

マーク、結果セット内の場所を保持します。カーソルは、そのクエリに固有のものです。同じカーソルを2つの異なるクエリーに使用することはできません。つまり、あるブックから別のブックのブックマークがどのくらい離れているかを示すことができます。

カーソルを別の場所に保存する場合は、フィルタ基準でキーをキーして適切なものを検索する必要があります。 Memcacheは、要素がいつでも追い出される可能性があるため、貧しい選択です。なぜ、次のページのURLにカーソルを置くだけでいいのですか?

関連する問題