すべてのデータベース オブジェクトの最後の 10 個の変更をユーザーに表示したいと考えています。
モデル オブジェクトの変更履歴を追跡するために django-reversion を使用しています。また、要約ビューでこれをいくらか複製しています。復元ではオブジェクトごとに履歴リストが作成されますが、概要ビューでは変更ごとに 1 つのリストが時系列で追跡されます。この要約リストを使用してクエリを実行する方が効率的ですか?それとも、すべてのオブジェクトの最新の 10 個の編集について、すべての復帰テーブルをクエリすることができますか?
2 番目の部分:オブジェクトごとにグループ化された編集内容をユーザーに表示したい
たとえば、ユーザーが 3 つのオブジェクトをそれぞれ 10 回編集したとします。ユーザーは異なる日に各オブジェクトを編集したため、1 日目にユーザーは 3 つすべてを編集し、2 日目にユーザーはそのうちの 1 つを編集した、などです。次のような表をユーザーに表示したいと思います。
Object Date of your most recent edit Date of last edit
Object 1 12-24-11 12-25-11
Object 2 12-20-11 12-23-11
2 番目の列は最新のユーザー固有の編集で、3 番目の列は任意のユーザーによる最新の編集です。
ユーザーがオブジェクト 1 を選択できるようにして、そのオブジェクトのすべての編集内容を表示できるようにします。
Object Date of your most recent edit Date of last edit
Object 1 12-24-11 12-25-11
edited name 12-24-11
edited type 12-19-11
edited subject 12-18-11
edited date 12-18-11
edited type 12-16-11
Object 2 12-20-11 12-23-11
このクエリをどのように構成すればよいでしょうか? 私が考えることができる最も直接的な方法は、復元テーブルまたは要約テーブルからユーザーによってフィルター処理されたオブジェクトの個別/一意のリストをクエリし、次にユーザーごとおよびオブジェクトごとに復元をクエリして、より詳細な履歴を取得することです。これで効率化できそうです。
この形式で簡単にクエリを実行できるように、変更を追跡する別の集計テーブルをユーザー別に作成することはできますか? そのタイプのテーブルをどのように構成しますか?
いくつかのコード。これを使用して、特定のオブジェクトのすべての履歴のリストを取得します。データベース オブジェクトのバージョンのリスト、編集内容、編集日、変更を行ったユーザーに関するメモが表示されます。
version_list = Version.objects.get_for_object(object).select_related("revision__user")
これを使用して、編集の簡単なリストを取得します。この要約テーブルでは、最後の 10 エントリが最新の変更 (オブジェクト、変更内容の詳細、日付、およびユーザー) です。
whats_new_items = WhatsNew.objects.all()[0:10]