Skip to content

vishes-shell/django-fields-history

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

django-fields-history

PyPI version Code style: black

A Django app that track history changes in model fields.

Important note: currently only one implementation of FieldsHistory is supported and it's with django.contrib.postgres.fields.JSONField which is JSONB under the hood. So only postgresql as database is supported

Similar projects:

Main difference that those libraries keep track of changes, and this library tracks the history change.

Simple explanation:

from field_history.trackers import FieldsHistoryTracker

class SimpleModel(models.Model):
    field = models.CharField(max_length=50)

    field_history = FieldsHistoryTracker(fields=['field'])

obj = SimpleModel.objects.create(field='value')
assert not obj.get_field_history()


obj.field = "new_value"
obj.save()
assert obj.get_field_history()
assert obj.get_field_history()[0].value == "value"

QuickStart

Install django-fields-history:

pip install django-fields-history

Add fields_history.postgres to INSTALLED_APPS (currently only postgres implementation is supported):

INSTALLED_APPS = [
    # rest of apps
    "fields_history.postgres",
]

And add trackers to your models and specify fields to track:

from field_history.trackers import FieldsHistoryTracker

class YourModel(models.Model):
    ...

    history_tracker = FieldsHistoryTracker(fields=["field1", "field2"])

And you are done.

Implementation

Every change of your fields field changes be tracked in fields_history.models.FieldsHistory in:

  • fields_history.postgres - JSONB postgres field

One object per save if tracked fields has been changed.

Credits

Basically this project is implemented based on django-field-history which itself used django-model-utils.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages