Admin integration

django-reversion can be used to add rollback and recovery to your admin site.

Overview

Registering models

Register your models with a subclass of reversion.admin.VersionAdmin.

from django.contrib import admin
from reversion.admin import VersionAdmin

@admin.register(YourModel)
class YourModelAdmin(VersionAdmin):

    pass

Hint

Whenever you register a model with django-reversion, run createinitialrevisions.

Note

If you’ve registered your models using reversion.register(), the admin class will use the configuration you specify there. Otherwise, the admin class will auto-register your model, following all inline model relations and parent superclasses.

Integration with 3rd party apps

You can use reversion.admin.VersionAdmin as a mixin with a 3rd party admin class.

@admin.register(SomeModel)
class YourModelAdmin(VersionAdmin, SomeModelAdmin):

    pass

If the 3rd party model is already registered with the Django admin, you may have to unregister it first.

admin.site.unregister(SomeModel)

@admin.register(SomeModel)
class YourModelAdmin(VersionAdmin, SomeModelAdmin):

    pass

reversion.admin.VersionAdmin

A subclass of django.contrib.ModelAdmin providing rollback and recovery.

revision_form_template = None

A custom template to render the revision form.

Alternatively, create specially named templates to override the default templates on a per-model or per-app basis.

  • 'reversion/app_label/model_name/revision_form.html'
  • 'reversion/app_label/revision_form.html'
  • 'reversion/revision_form.html'

recover_list_template = None

A custom template to render the recover list.

Alternatively, create specially named templates to override the default templates on a per-model or per-app basis.

  • 'reversion/app_label/model_name/recover_list.html'
  • 'reversion/app_label/recover_list.html'
  • 'reversion/recover_list.html'

recover_form_template = None

A custom template to render the recover form.

  • 'reversion/app_label/model_name/recover_form.html'
  • 'reversion/app_label/recover_form.html'
  • 'reversion/recover_form.html'

history_latest_first = False

If True, revisions will be displayed with the most recent revision first.

reversion_register(model, **options)

Callback used by the auto-registration machinery to register the model with django-reversion. Override this to customize how models are registered.

def reversion_register(self, model, **options):
    options["exclude"] = ("some_field",)
    super(YourModelAdmin, self).reversion_register(model, **options)
model
The model that will be registered with django-reversion.
options
Registeration options, see reversion.register().