Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

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, 3.5

  • Django: 1.8, 1.9, 1.10

Install

Install it with pip:

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

  • New release notes here

1.5.3 (2016-09-20)

  • Stop rounding time.time() down to the nearest integer, so we are more fine grained around expiration. It might also fix a subtle timing bug around re-fetching the remote cache unnecessarily.

1.5.2 (2016-07-31)

  • Fixed update missing when _local_last_updated could be set even when it wasn’t updated

  • Fixed update missing from integer rounding in time comparison

  • Fixed CachedDict.__repr__ so it works for other subclasses of CachedDict than ModelDict (don’t assume self.model exists)

1.5.1 (2016-06-13)

  • Fixed local cache never expiring if value was checked too often.

  • Use Django’s cache.set_many for more efficient storage.

1.5.0 (2016-01-11)

  • Forked by YPlan

  • Fixed concurrency TOCTTOU bug for threaded Django servers.

  • Stopped including the ‘tests’ directory in package

  • Django 1.8 and 1.9 supported.

  • Python 3 support added.

  • Fixed setdefault() to return the value that was set/found, as per normal dict semantics. Thanks @olevinsky.

1.4.1 (2012-12-04)

  • Last release by Disqus

Metadata

Release files for django-modeldict-yplan 1.5.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-modeldict-yplan 1.5.3
File Size Uploaded
django-modeldict-yplan-1.5.3.tar.gz 14.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-modeldict-yplan 1.5.3
File Interpreter ABI Platform
django_modeldict_yplan-1.5.3-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 27.9 kB

Release files / django-modeldict-yplan-1.5.3.tar.gz

Download URL django-modeldict-yplan-1.5.3.tar.gz
Size 14.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ec67aa9bf6e689b3d468a770e38b90dd4b4b4ccb7ddd034d041836924b910eb6
BLAKE2b-256 checksum
How to use checksums
5f0aa966b1d10546465b66728e0e4ce4c5908442a60fdd456e396692bdbf8bc6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / django_modeldict_yplan-1.5.3-py2.py3-none-any.whl

Download URL django_modeldict_yplan-1.5.3-py2.py3-none-any.whl
Size 13.3 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
b6144e9cb5cb03c206290ab73d954975387dc01ffb6bad2cfa06af06d9816dc0
BLAKE2b-256 checksum
How to use checksums
827d89fc713b7e535e3b1a0857d86246d5a9c14e3847dbe5851f7a04d8c8d67c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page