2

すべてのデータベース オブジェクトの最後の 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]
4

0 に答える 0