Global revision log with django-reversion
If you ever needed to track changes to model instances in your Django code, you probably stumbled upon django-reversion (and if you didn't, I highly recommend it). It's a great way to add version control to your models and keep history of changes. For every model class registered with reversion
the history view in Django administration panel gets the ability to rollback to previous versions. However, there is no central place to display a global log of all changes. Fortunately, it is quite easy to add.
Place the following code in one of your admin.py
files:
from django.shortcuts import redirect from reversion.models import Revision class RevisionAdmin(admin.ModelAdmin): list_display = ('user', 'comment', 'date_created') search_fields = ('=user__username', '=user__email') date_hierarchy = ('date_created') def change_view(self, request, obj=None): self.message_user(request, 'You cannot change history.') return redirect('admin:reversion_revision_changelist') admin.site.register(Revision, RevisionAdmin)
Note: it would make no sense to edit revisions, hence the change view redirects back to list.