django-extended-history is (IMHO) the simplest way to record all changes made in admin-screens.
- Django >=4.2
- Drop-in extension for Django history (Log entries). No changes in any model, hence no migrations.
- Records all changes in JSON format, extending what Django stores by default.
- Adds a view 'Log entries' under 'Administration', showing all content types for which a user has permissions.
- Safe to remove. Django will ignore all extra recorded information and revert to it's default history. So give it a spin!
pip install django-extended-history
Add django_extended_history to INSTALLED_APPS setting like this:
INSTALLED_APPS = [
...,
'django_extended_history',
]
Done!
Apply the DjangoExtendedHistory mixin to all applicable admin-views:
from django.contrib import admin
from .models import MyModel
from django_extended_history.admin import DjangoExtendedHistory
@admin.register(MyModel)
class MyModelAdmin(DjangoExtendedHistory, admin.ModelAdmin):
...
Below an example Log Entry where the first name of a user was changed from 'John' to 'Jane', the email address was changed accordingly and the user was added to a group 'Expert' at the same time.
Django extended history is released under the BSD-3 license, like Django. If you like it, please consider contributing.