Skip to main content

Save model history

Project description

django-model-history-log

Register fields updates.

Install

Add model_history.apps.ModelHistoryConfig into your INSTALLED_APPS

#!python
INSTALLED_APPS = [
    ...
    "model_history.apps.ModelHistoryConfig",
    ...
]

and than run

./manage.py migrate

Configure

Register a model at startup

You can register a model for logging at startup using History.register helper:

class MyAppConfig(AppConfig):
    name = "myapp"

    def ready(self):
        from model_history.models import History
        from django.contrib.auth import get_user_model

        History.register(get_user_model(), exclude=["password"])

You can register all models with a snippet like this

class MyAppConfig(AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "myapp"
    verbose_name = _("My Website")

    def ready(self):
        from django.contrib.admin.models import LogEntry
        from django.contrib.auth import get_user_model
        from django.contrib.sessions.models import Session
        from model_history.models import History, HistoryLog

        User = get_user_model()
        History.register(User, exclude=["password"])
        for model in apps.get_models():
            if model not in [LogEntry, History, HistoryLog, Session, User]:
                History.register(model)

Usage

Log a single instance

You can log a single instance changes with the HistoryManager.log() method:

instance = MyInstance.objects.get(...)
...
History.objects.log(instance)
Params
  • instance: models.Model = instance to log
  • exclude: list[str] | None = exclude these fields from logging
  • serializer_class: rest_framework.serializers.Serializer | None = use this serializer instance

Query a log

    from django.contrib.auth import get_user_model

    history = History.objects.fetch(User.objects.first())
    history.logs.all()

fetch() always returns an History instance, regardless it is saved on db or not. You must rely on it's pk value or you should check for logs.

CHANGES

0.2.0

  • Rename project to django-model-history-log (sorry, no migration path)
  • Reformat all codebase with black
  • Update isort/flake8 config
  • Use django JSONField
  • Remove default ordering, use only in admin
  • Add register/unregister actions
  • Add HistoryQuerySet.fetch api
  • Save str(source) as {History,HistoryLog}.label
  • Add en translations
  • Add it translations

0.1.1

  • added missing on_delete on HistoryRow.history field

0.1.0

  • initial relase

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-model-history-log-0.2rc3.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

django_model_history_log-0.2rc3-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file django-model-history-log-0.2rc3.tar.gz.

File metadata

File hashes

Hashes for django-model-history-log-0.2rc3.tar.gz
Algorithm Hash digest
SHA256 51add592119baca49ac0ecf9bb7f8ed89a373f6968e93824d0dd98129a3f31d2
MD5 a7763b307ab0b857219045536894dd6b
BLAKE2b-256 81be6e7979b86356fcd48ead1d79dea465d78d86d79fb4cf0cce5734d76e793e

See more details on using hashes here.

File details

Details for the file django_model_history_log-0.2rc3-py3-none-any.whl.

File metadata

File hashes

Hashes for django_model_history_log-0.2rc3-py3-none-any.whl
Algorithm Hash digest
SHA256 fd3d959328cd0c8406a9a1f47040e9458792911929dc6b1993c4dc45e29e9c8e
MD5 32a283559eb837fc74bbc06ad8c61b37
BLAKE2b-256 868b023264cece70d3708cb085f41cbf7ed87153dc32c030ec7cfa08bbefb24f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page