===============================
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.
[](https://travis-ci.org/vijaykatam/django-cache-manager)
[](https://coveralls.io/r/vijaykatam/django-cache-manager)
[](https://badge.fury.io/py/django-cache-manager)
## Installation
```sh
pip install django-cache-manager
```
### Caching strategy
* Cache results for a model on load.
* Evict cache for model on update.
## Usage
Add 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 backend
that 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 CacheManager
class MyModel(models.Model):
#set cache manager as default
objects = CacheManager()
```
## Django shell
To run django shell with sample models defined in tests.
```sh
make shell
```
Sample models
```
from tests.models import Manufacturer
from tests.models import Car
from tests.models import Driver
m = 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()
```
## Testing
To run tests
```sh
make test
```
##### Supported Django versions
Supported - 1.5, 1.6, 1.7, 1.8, 1.9, 1.10
History
-------
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.10
0.4.1
---------------------
* Update requirements to Django<1.10
0.4
---------------------
* Support for django 1.9
0.3
---------------------
* Support for django 1.8
0.2
---------------------
* Use django.core.cache.caches available in django 1.7 for efficient cache backend access
0.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/12717
0.1.1
---------------------
* [BUGFIX] - Invalidate related model caches for changes, needed for select_related queries.
0.1.0
---------------------
* Test coverage
* Cache invalidation for manytomany relation
0.1.0-beta.1
---------------------
* First beta release
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.
[](https://travis-ci.org/vijaykatam/django-cache-manager)
[](https://coveralls.io/r/vijaykatam/django-cache-manager)
[](https://badge.fury.io/py/django-cache-manager)
## Installation
```sh
pip install django-cache-manager
```
### Caching strategy
* Cache results for a model on load.
* Evict cache for model on update.
## Usage
Add 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 backend
that 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 CacheManager
class MyModel(models.Model):
#set cache manager as default
objects = CacheManager()
```
## Django shell
To run django shell with sample models defined in tests.
```sh
make shell
```
Sample models
```
from tests.models import Manufacturer
from tests.models import Car
from tests.models import Driver
m = 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()
```
## Testing
To run tests
```sh
make test
```
##### Supported Django versions
Supported - 1.5, 1.6, 1.7, 1.8, 1.9, 1.10
History
-------
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.10
0.4.1
---------------------
* Update requirements to Django<1.10
0.4
---------------------
* Support for django 1.9
0.3
---------------------
* Support for django 1.8
0.2
---------------------
* Use django.core.cache.caches available in django 1.7 for efficient cache backend access
0.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/12717
0.1.1
---------------------
* [BUGFIX] - Invalidate related model caches for changes, needed for select_related queries.
0.1.0
---------------------
* Test coverage
* Cache invalidation for manytomany relation
0.1.0-beta.1
---------------------
* First beta release
Metadata
Release files for django-cache-manager 0.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django-cache-manager-0.5.1.tar.gz | 13.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_cache_manager-0.5.1-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 25.1 kB
Release files / django-cache-manager-0.5.1.tar.gz
| Download URL | django-cache-manager-0.5.1.tar.gz |
|---|---|
| Size | 13.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d1a0bce0acf94cce81629a8d0f62cb5c6def22ae72ad1cbe187360f25498a6ec
|
|
BLAKE2b-256 checksum How to use checksums |
d3e59240f4ef332876329a0ac6f61338e2714882b51dbc6bb0af6d34dd02911c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / django_cache_manager-0.5.1-py2.py3-none-any.whl
| Download URL | django_cache_manager-0.5.1-py2.py3-none-any.whl |
|---|---|
| Size | 11.5 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
7af32729d1490714a4a3e7fb3c5701cd34fc71e943c6223a4b6b546a66d255e0
|
|
BLAKE2b-256 checksum How to use checksums |
cb4628fcea87445208aa2687229008c438556d3ece6f910baafadf60e92b0fc3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |