Skip to content

HealthyFridge/django-extended-history

Repository files navigation

PyPI PyPI download month

django-extended-history

django-extended-history is (IMHO) the simplest way to record all changes made in admin-screens.

Requirements

  • Django >=4.2

Features

  • 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!

Installation

pip install django-extended-history

Setup

Add django_extended_history to INSTALLED_APPS setting like this:

INSTALLED_APPS = [
...,
'django_extended_history',
]

Done!

Usage

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):
    ...

Example Log Entry

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.

https://github.com/HealthyFridge/django-extended-history/blob/main/Screenshot%20change%20message.png?raw=true

Misc

Django extended history is released under the BSD-3 license, like Django. If you like it, please consider contributing.