goshstore

Django get-or-set hstore field


Keywords
django, hstore, postgres
License
MIT
Install
pip install goshstore==0.3.0

Documentation

django-goshstorefield

Build Status

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.