Track changes to django models
Simple django app for tracking db changes executed through orm. (Only tested on python3 and django-1.8.1)
Once installed (see “Installation“ below), every change to tracked model will be recorded whenever “save“ or “delete“ is called.
To include usefull information about circumstances of the changes use
Same goes for model.delete(), where request is just django HttpRequest instance, and token is result of tracked_model.control.create_track_token(request) call.
This will store djagno user making changes along with ip, host, user agent, request path, request method, referer and request timestamp.
To access model’s history, call it’s tracked_model_history method
Model instance can be created from History instance by calling materialize
model = SomeModel.objects.create(attr='initial') model.attr = 'change 1' model.save() model.attr = 'change 2' model.save() model_initial_state = model.tracked_history().first().materialize()
$ pip install django-tracked-model
Add tracked_model to INSTALLED_APPS in settings.
$ python manage.py syncdb
Mark model as trackable
from django.db import models from tracked_model.control import TrackedModelMixin as Tracked class MyModel(Tracked, models.Model): spam = models.IntegerField() egg = models.TextField()
If for some weird reason you want to hack around, clone repo and install stuff from dev-reqs.txt
$ pip install -r dev-reqs.txt
There is a Makefile with some handy shortcuts e.g.
$ make test $ make qa
Poke around Makefile for details