Django DBCache Fields
项目描述
- 版本::
- 0.9.3
- 文档::
- 下载::
- 源代码::
- 关键词::
django, database, cache, methods, decorator
关于
这个库提供了一个装饰器 dbcache,用于将Django Model 方法的输出缓存到数据库中。
它为每个你装饰的方法在你的 Model 上添加一个常规 Field。这意味着你可以使用所有的ORM函数,如聚合和迁移。你可以使用现有的字段,或者让 dbcache 为你创建字段。
您也可以通过创建一个 _dirty_ 函数或指示哪些其他模型影响此缓存的值来使缓存的值无效。默认情况下,缓存的值仅在模型保存时更新。
安装
您可以通过Python包索引(PyPI)或从源安装 django_dbcache_fields。
使用 pip 安装
$ pip install -U django_dbcache_fields
用法
要使用此功能,您需要按照以下步骤操作
安装 django_dbcache_fields 库
$ pip install django_dbcache_fields
将 django_dbcache_fields 添加到 Django 项目的 settings.py 中的 INSTALLED_APPS
INSTALLED_APPS = ( # ..., 'django_dbcache_fields', )
注意,模块名称中没有破折号,只有下划线。
全部完成。现在您可以在您的 Model 中使用 @dbcache 装饰方法。
示例
简单示例,展示 dbcache 的作用
from django.db import models
from django_dbcache_fields.decorators import dbcache
class Ingredient(models.Model):
name = models.CharField(max_length=100)
price = models.DecimalField(max_digits=4, decimal_places=2)
class Pizza(models.Model):
name = models.CharField(max_length=100)
ingredients = models.ManyToManyField(Ingredient)
@dbcache(models.DecimalField(max_digits=6, decimal_places=2,
blank=True, null=True), invalidated_by=['myapp.Ingredient'])
def get_price(self):
return self.ingredients.aggregate(total=Sum('price'))['total'] or Decimal()
每次调用 get_price 都会执行数据库查询以计算所有成分的总价格。然而,dbcache 装饰器导致模型中添加了一个新字段:一个可以存储 get_price 函数结果的 DecimalField,因此不需要重复执行相同的查询。
项目详细信息
下载文件
下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于 安装软件包 的信息。
源代码分布
django_dbcache_fields-0.9.3.tar.gz (711.6 kB 查看哈希值)
构建分布
关闭
哈希值 for django_dbcache_fields-0.9.3-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6c5efbdf5e2c11c36a6dfb5d68530d4ce0cf412e1dce4c0659fe9222b065ad76 |
|
MD5 | bd6897c7ada5b793e7f5e403456453c5 |
|
BLAKE2b-256 | 56144dbde0b1c7184666b29fb6df590f753790b72ca82ac8244c256f24256ff1 |