Schema evolutions for django projects
Clone or download
chipx86 Add methods for removing signatures from parent signatures.
This introduces `ProjectSignature.remove_app_sig`,
`AppSignature.remove_model_sig`, and `ModelSignature.remove_field_sig`,
which are needed to allow the removal of data from the signature.

Unit tests were added to check for signature removal and error

Testing Done:
Unit tests pass.

Tested this with other pending changes and verified that signatures
were properly removed.

Reviewed at
Latest commit daf93a5 Nov 2, 2018

================ Django Evolution

An implementation of schema evolution for the Django web framework.

For details on how to use Django Evolution, read the tutorial/instructions contained in docs/evolution.txt.

Most new Django projects may also want to take a look at South (, or the features built into Django 1.7.

When you run ./ syncdb, Django will look for any new models that have been defined, and add a database table to represent those new models. However, if you make a change to an existing model, ./ syncdb will not make any changes to the database.

This is where Django Evolution fits in. Django Evolution is an extension to Django that allows you to track changes in your models over time, and to update the database to reflect those changes.

Django Evolution is a work in progress. The interface and usage of Django Evolution is subject to change as we finess the details. If you'd like to help out, check out the source and let us know what you think.

If you have any questions that aren't covered by the FAQ and/or documentation, there is a mailing list where you may be able to get answers.

Using Django Evolution

Django Evolution requires features that are only available in Django v1.4 or higher.


To install Django Evolution, simply run:

$ easy_install -U django_evolution

You can also check out Django Evolution from the GitHub repository.

Using Django Evolution in your project

  1. Add django_evolution to the INSTALLED_APPS for your project
  2. Run ./ syncdb
  3. Make modifications to the model files in your project
  4. Run ./ evolve --hint --execute

For a detailed description of the capabilities of Django Evolution, please read the FAQ, and/or the documentation