django-goshstorefield
django-goshstore field is a reusable Django field that allows you to get or set values from hstore fields.
How to use
Assuming you have a django model defined:
from django.db import models
from goshstore import GosHStoreField
class MyModel(models.Model):
hstores = GosHStoreField(default={})
@hstores.getter(key='foo', converter=Decimal)
def get_foo(self, save=True, reset=False):
return max(range(100))
instance = MyModel()
Calling instance.get_foo() will return instance.hstores['foo'] if 'foo' is in instance.hstores. Otherwise, 100 will be stored into instance.hstores['foo'] and instance.save(update_fields=['hstores']) will be called. To prevent calling instance.save(), call instance.get_foo(save=False).
When calling instance.get_foo(reset=True), max(range(100)) will be evaluated and returned regardless whether 'foo' is already in instance.hstores.