Skip to content
Tracking dirty fields on a Django model
Branch: develop
Clone or download
romgar Merge pull request #144 from bashu/patch-1
better syntax highlighting
Latest commit abfa404 Mar 3, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs docs update May 31, 2018
src/dirtyfields
tests Fix F632: replacing is by == Mar 2, 2019
.gitignore update gitignore Mar 1, 2016
.travis.yml Fix coveralls integration Dec 13, 2018
AUTHORS add an AUTHORS file and update setup.py Jun 24, 2015
CLASSIFIERS.txt Update Python & Django support Dec 13, 2018
ChangeLog.rst
LICENSE
MANIFEST.in Renaming requirements file Jun 17, 2015
README.rst
pytest.ini
requirements.txt
setup.py Update setup and ChangeLog to prepare the 1.3.1 release Feb 28, 2018
tests-requirements.txt Fix jsonfield third-party tests Dec 13, 2018
tox.ini

README.rst

Django Dirty Fields

Join the chat at https://gitter.im/romgar/django-dirtyfields https://travis-ci.org/romgar/django-dirtyfields.svg?branch=develop https://coveralls.io/repos/romgar/django-dirtyfields/badge.svg?branch=develop http://readthedocs.org/projects/django-dirtyfields/badge/?version=develop

Tracking dirty fields on a Django model instance. Dirty means that field in-memory and database values are different.

This package is compatible and tested with the following Python & Django versions:

Django Python
1.11 2.7, 3.5, 3.6, 3.7 (added in 1.11.17)
2.0, 2.1 3.5, 3.6, 3.7

Full documentation

Install

$ pip install django-dirtyfields

Usage

To use django-dirtyfields, you need to:

  • Inherit from DirtyFieldsMixin in the Django model you want to track.

    from django.db import models
    from dirtyfields import DirtyFieldsMixin
    
    class TestModel(DirtyFieldsMixin, models.Model):
        """A simple test model to test dirty fields mixin with"""
        boolean = models.BooleanField(default=True)
        characters = models.CharField(blank=True, max_length=80)
  • Use one of these 2 functions on a model instance to know if this instance is dirty, and get the dirty fields:

    • is_dirty()
    • get_dirty_fields()

Example

>>> from tests.models import TestModel
>>> tm = TestModel.objects.create(boolean=True,characters="testing")
>>> tm.is_dirty()
False
>>> tm.get_dirty_fields()
{}

>>> tm.boolean = False

>>> tm.is_dirty()
True
>>> tm.get_dirty_fields()
{'boolean': True}

Consult the full documentation for more informations.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.