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
IfTrue
, 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().