django-eav ========== Introduction ------------ django-eav provides an Entity-Attribute-Value storage model for django apps. For a decent explanation of what an Entity-Attribute-Value storage model is, check `Wikipedia `_. .. note:: This software was inspired / derrived from the excellent `eav-django `_ written by Andrey Mikhaylenko. There are a few notable differences between this implimentation and the eav-django implementation. * This one is called django-eav, whereas the other is called eav-django. * This app allows you to to 'attach' EAV attributes to any existing django model (even from third-party apps) without making any changes to the those models' code. * This app has slightly more robust (but still not perfect) filtering. Usage ----- Register your model(s) ~~~~~~~~~~~~~~~~~~~~~~ Before you can attach eav attributes to your model, you must register your model with eav:: >>> import eav >>> eav.register(MyModel) Create some attributes ~~~~~~~~~~~~~~~~~~~~~~ :: >>> from eav.models import Attribute >>> Attribute.objects.create(name='Weight', datatype=Attribute.TYPE_FLOAT) >>> Attribute.objects.create(name='Color', datatype=Attribute.TYPE_TEXT) Assign eav values ~~~~~~~~~~~~~~~~~ :: >>> m = MyModel() >>> m.eav.weight = 15.4 >>> m.eav.color = 'blue' >>> m.save() >>> m = MyModel.objects.get(pk=m.pk) >>> m.eav.weight 15.4 >>> m.eav.color blue >>> p = MyModel.objects.create(eav__weight = 12, eav__color='red') Filter on eav values ~~~~~~~~~~~~~~~~~~~~ :: >>> MyModel.objects.filter(eav__weight=15.4) >>> MyModel.objects.exclude(name='bob', eav__weight=15.4, eav__color='red') Further Information ------------------- Install from GitHub ~~~~~~~~~~~~~~~~~~~ It should be possible to install this tool directly from github using pip:: pip install -e git+git://github.com/mvpdev/django-eav.git#egg=django-eav Documentation and Examples ~~~~~~~~~~~~~~~~~~~~~~~~~~ ``_