2016-12-04 5 views
1

使用: django 1.10復帰2.0.8。django-reversionを使用してモデルインスタンスの変更ログ履歴を表示

私の質問は、特定のモデルインスタンスに対して行われた変更の素敵なリストを表示する方法です。これは、ユーザーがすべてのリビジョンのすべての変更(フィールドの新しい値)のリストをすばやく表示できることを意味します。彼は、変更されたものの新しい値だけすべてのフィールドを見る必要はありません。

私は変更を保存するための良いツールがdjango-reversionであることを発見しました。しかし、私は、私が言及したように、特定のモデルインスタンスに対して素晴らしい変更ログ履歴を表示することである私の問題の解決策を見つけることができません。

私は2つのリビジョンを比較できる解決策を見つけましたdjango-reversion-compareしかし、それは私が探しているものではありません。たぶんそこにはより良いツールがありますか?

タスクは、誰にいつ変更されたのかをユーザーに伝えすぎています。モデルはシンプルで、多くのデータを保存しません。それは外部キーを格納します。

+0

最終的に何をしましたか? –

答えて

-1

私も同じことを探していた、といくつかのSOの記事を読んだ後、ドキュメントなど、私は大きく以下の3つのアプローチのいずれかからソリューションを選択しなければならなかったようだ:

1)新しいモデルインスタンスを保存する前に、既存のモデルインスタンスを取得します。各フィールドを比較する。変更されたフィールドをreversion.set_comment( '(ここではすべての変更が)')に入れます。モデルインスタンスの保存を続行します。

2)古いフィールドのコピーをモデルの__init __()に保存し、後で新しいフィールドをモデルのsave()で比較して、変更されたものを追跡します。変更されたフィールドをreversion.set_comment( '(ここではすべて変更))'に入れてください。モデルインスタンスの保存を続行します。私が編集を示す私のために素晴らしい仕事django-reversion-compare使用して終了

3)はジャンゴ・復帰のlow-level APIを使用してdiff生成し、何とか管理

との統合(このアプローチでは、DBの検索が保存されます)ウィキスタイル(とにかく上記(3)を使用している可能性があります)

django-reversionの開発者confirmed(3)も競合状態を避けるより良いオプションです。

さまざまなオプションを調べたい場合は、thisは、賛否両論の良いアイデアがたくさんある素晴らしい投稿です。

(私もDjango 1.10です)

関連する問題