django_evolution.models

Database models for tracking project schema history.

Classes

Evolution(id, version, app_label, label)

SignatureField([verbose_name, name, …])

A field for loading and storing project signatures.

Version(id, signature, when)

VersionManager(*args, **kwargs)

Manage Version models.

class django_evolution.models.VersionManager(*args, **kwargs)

Bases: django.db.models.manager.Manager

Manage Version models.

This introduces a convenience function for finding the current Version model for the database.

current_version(using=None)

Return the Version model for the current schema.

This will find the Version with both the latest timestamp and the latest ID. It’s here as a replacement for the old call to latest(), which only operated on the timestamp and would find the wrong entry if two had the same exact timestamp.

Parameters

using (unicode) – The database alias name to use for the query. Defaults to None, the default database.

Raises

Version.DoesNotExist – No such version exists.

Returns

The current Version object for the database.

Return type

Version

__slotnames__ = []
class django_evolution.models.SignatureField(verbose_name=None, name=None, primary_key=False, max_length=None, unique=False, blank=False, null=False, db_index=False, rel=None, default=<class 'django.db.models.fields.NOT_PROVIDED'>, editable=True, serialize=True, unique_for_date=None, unique_for_month=None, unique_for_year=None, choices=None, help_text='', db_column=None, db_tablespace=None, auto_created=False, validators=(), error_messages=None)

Bases: django.db.models.fields.TextField

A field for loading and storing project signatures.

This will handle deserializing any project signatures stored in the database, converting them into a ProjectSignature, and then writing a serialized version back to the database.

description = 'Signature'
contribute_to_class(cls, name)

Perform operations when added to a class.

This will listen for when an instance is constructed in order to perform some initial work.

Parameters
  • cls (type) – The model class.

  • name (str) – The name of the field.

value_to_string(obj)

Return a serialized string value from the field.

Parameters

obj (django.db.models.Model) – The model instance.

Returns

The serialized string contents.

Return type

unicode

to_python(value)

Return a ProjectSignature value from the field contents.

Parameters

value (object) – The current value assigned to the field. This might be serialized string content or a ProjectSignature instance.

Returns

The project signature stored in the field.

Return type

django_evolution.signatures.ProjectSignature

Raises

django.core.exceptions.ValidationError – The field contents are of an unexpected type.

get_prep_value(value)

Return a prepared Python value to work with.

This simply wraps to_python().

Parameters

value (object) – The current value assigned to the field. This might be serialized string content or a ProjectSignature instance.

Returns

The project signature stored in the field.

Return type

django_evolution.signatures.ProjectSignature

Raises

django.core.exceptions.ValidationError – The field contents are of an unexpected type.

get_db_prep_value(value, connection, prepared=False)

Return a prepared value for use in database operations.

Parameters
  • value (object) – The current value assigned to the field. This might be serialized string content or a ProjectSignature instance.

  • connection (django.db.backends.base.BaseDatabaseWrapper) – The database connection to operate on.

  • prepared (bool, optional) – Whether the value is already prepared for Python.

Returns

The value prepared for database operations.

Return type

unicode

class django_evolution.models.Version(id, signature, when)

Bases: django.db.models.base.Model

signature

A wrapper for a deferred-loading field. When the value is read from this object the first time, the query is executed.

when

A wrapper for a deferred-loading field. When the value is read from this object the first time, the query is executed.

objects = <django_evolution.models.VersionManager object>
is_hinted()

Return whether this is a hinted version.

Hinted versions store a signature without any accompanying evolutions.

Returns

True if this is a hinted evolution. False if it’s based on explicit evolutions.

Return type

bool

__str__()

Return str(self).

evolutions

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

get_next_by_when(*, field=<django.db.models.fields.DateTimeField: when>, is_next=True, **kwargs)
get_previous_by_when(*, field=<django.db.models.fields.DateTimeField: when>, is_next=False, **kwargs)
id

A wrapper for a deferred-loading field. When the value is read from this object the first time, the query is executed.

class django_evolution.models.Evolution(id, version, app_label, label)

Bases: django.db.models.base.Model

version

Accessor to the related object on the forward side of a many-to-one or one-to-one (via ForwardOneToOneDescriptor subclass) relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Child.parent is a ForwardManyToOneDescriptor instance.

app_label

A wrapper for a deferred-loading field. When the value is read from this object the first time, the query is executed.

label

A wrapper for a deferred-loading field. When the value is read from this object the first time, the query is executed.

__str__()

Return str(self).

id

A wrapper for a deferred-loading field. When the value is read from this object the first time, the query is executed.

objects = <django.db.models.manager.Manager object>
version_id

A wrapper for a deferred-loading field. When the value is read from this object the first time, the query is executed.