1

管理者以外の自分のコードで復帰履歴にアクセスするために、django-reversionドキュメントが低レベルAPIと呼ぶものを使用しています。Revisionメタデータを保存するために、を含む独自のモデルを設定してモデルを拡張しましたOneToOneField(Revision)。ここまでは順調ですね。

しかし、その参照を考えると、その直前Revisionのリビジョンにアクセスするにはどうすればよいですか?たとえば、このリビジョンと以前のリビジョンの間の変更のリストを生成するには、リストに戻って探しているバージョンを検索するよりも効率的な方法はありますか?reversion.get_for_object

4

2 に答える 2

5

Revisionオブジェクトにはdate_created属性があるため、特定のリビジョンより前のオブジェクトの最新のリビジョンを1つ選択するクエリを作成できますdate_created。基本的に、低レベルAPIのget_for_date関数の実装をコピーしますが、1つの変更を加えます-"date_created__lt"代わりに使用します"__lte"

def get_previous(object, date):
    """Returns the latest version of an object prior to the given date."""
    versions = reversion.get_for_object(object)
    versions = versions.filter(revision__date_created__lt=date)
    try:
        version = versions[0]
    except IndexError:
        raise Version.DoesNotExist
    else:
        return version
于 2012-01-31T03:55:26.037 に答える
0

バージョンオブジェクトにはリビジョン属性があり、「get_next_by_date_created」と「get_previous_by_date_created」の2つのメソッドがあり、どちらの方法でもバージョン履歴をトラバースできます。

version.revision.get_previous_by_date_created()
于 2014-11-11T21:15:51.850 に答える