Package: django-cache-manager
===============================django-cache-manager===============================Simple cache manager for django models that caches querysets for a model. Cache manager will cache any query that has been seen for a model. Model cache is evicted for any updates/deletes to the model. This manager is useful for models that don't change often.[![Build Status](https://travis-ci.org/vijaykatam/django-cache-manager.svg?branch=master)](https://travis-ci.org/vijaykatam/django-cache-manager)[![Coverage Status](https://img.shields.io/coveralls/vijaykatam/django-cache-manager.svg)](https://coveralls.io/r/vijaykatam/django-cache-manager)[![PyPI version](https://badge.fury.io/py/django-cache-manager.svg)](https://badge.fury.io/py/django-cache-manager)## Installation```shpip install django-cache-manager```### Caching strategy* Cache results for a model on load.* Evict cache for model on update.## UsageAdd to installed apps```INSTALLED_APPS = (...'django_cache_manager',...)```Define cache backend for `django_cache_manager.cache_backend` in `settings.py`. The backend can be any cache backendthat implements django cache API.```CACHES = {'django_cache_manager.cache_backend': {'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache','LOCATION': '127.0.0.1:11211',}}``````from django_cache_manager.cache_manager import CacheManagerclass MyModel(models.Model):#set cache manager as defaultobjects = CacheManager()```## Django shellTo run django shell with sample models defined in tests.```shmake shell```Sample models```from tests.models import Manufacturerfrom tests.models import Carfrom tests.models import Driverm = Manufacturer(name='Tesla')m.save()c = Car(make=m, model='Model S', year=2015)c.save()d = Driver(first_name ='ABC', last_name='XYZ')d.save()d.cars.add(c)drivers = Driver.objects.select_related('car', 'manufacturer').all()```## TestingTo run tests```shmake test```##### Supported Django versionsSupported - 1.5, 1.6, 1.7, 1.8, 1.9, 1.10History-------0.5.1---* Avoid spurious cache miss when query is empty* Fixed error: 'NoneType' object has no attribute `\_meta`0.5---* Add support for Django 1.100.4.1---------------------* Update requirements to Django<1.100.4---------------------* Support for django 1.90.3---------------------* Support for django 1.80.2---------------------* Use django.core.cache.caches available in django 1.7 for efficient cache backend access0.1.5---------------------* [BUGFIX] - Fix for non-ascii characters in query.0.1.4---------------------* [BUGFIX] - Fix cache eviction on bulk updates for models that have a ManyToManyField with an intermediate(through) model.0.1.3---------------------* [BUGFIX] - Fix cache eviction for models that have a ManyToManyField with an intermediate(through) model.0.1.2---------------------* [BUGFIX] - Properly handle passing of an empty iterable to '\__in' filter args.  Related Django bug: https://code.djangoproject.com/ticket/127170.1.1---------------------* [BUGFIX] - Invalidate related model caches for changes, needed for select_related queries.0.1.0---------------------* Test coverage* Cache invalidation for manytomany relation0.1.0-beta.1---------------------* First beta release