Django provides a great ORM and with the power of South one can easily perform schema alteration.
However, some projects may require runtime schema alteration and that's what django-mutant provides.
The main concept was inspired by those projects:
- Will Hardy dynamic-models with doc and talk.
- And even more by django-dynamo
The project is still in an early phase but a couple of complex things already works such as declaration of RelatedField
(ForeignKey
, ManyToManyField
) between models and an easy way of declaring subclasses of FieldDefinition
which allow any Field
subclass to be be represented easily:
class DateFieldDefinition(FieldDefinition):
auto_now = fields.BooleanField(_(u'auto now'), default=False)
auto_now_add = fields.BooleanField(_(u'auto_now_add'), default=False)
class Meta:
app_label = 'mutant'
defined_field_class = fields.DateField
defined_field_options = ('auto_now', 'auto_now_add',)
defined_field_category = _(u'datetime')
This approach also allows projects such as django-non-rel to be truly useful since both your schema and your ORM wrapper around it are flexible.
From now on I think the best way to contribute and get in touch is using github messaging system (issues and pull requests)
Development version can be installed from pip: pip install django-mutant==dev
.