Skip to main content

Stores a model as a dictionary

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

django-modeldict

https://img.shields.io/pypi/v/django-modeldict-yplan.svg https://travis-ci.org/YPlan/django-modeldict.svg?branch=master

ModelDict is a very efficient way to store things like settings in your database. The entire model is transformed into a dictionary (lazily) as well as stored in your cache. It’s invalidated only when it needs to be (both in process and based on CACHE_BACKEND).

It was originally created by Disqus, but due to the inactivity we at YPlan have taken over maintenance on this fork.

Requirements

Tested with all combinations of:

  • Python: 2.7

  • Django: 1.7, 1.8

Install

Install it with pip (or easy_install):

pip install django-modeldict-yplan

Make sure you pip uninstall django-modeldict first if you’re upgrading from the original to this fork - the packages clash.

Example Usage

# You'll need a model with fields to use as key and value in the dict
    class Setting(models.Model):
        key = models.CharField(max_length=32)
        value = models.CharField(max_length=200)

# Create the ModelDict...
    settings = ModelDict(Setting, key='key', value='value', instances=False)

# And you can treat it like a normal dict:

    # Missing values = KeyError
    settings['foo']
    >>> KeyError

    # Sets supported
    settings['foo'] = 'hello'

    # Fetch the current value using normal dictionary access
    settings['foo']
    >>> 'hello'

# ...or by normal model queries
Setting.objects.get(key='foo').value
>>> 'hello'

History

Pending Release

  • Forked by YPlan

1.4.1 (2012-12-04)

  • Last release by Disqus

Project details


Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page