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
model.save(request=request)
or
model.save(track_token=token)
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.tracked_model_history()
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()
```sh
$ pip install django-tracked-model
```
-
Add
tracked_model
toINSTALLED_APPS
insettings
. -
Synch db
$ 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