django dbcache字段
django-dbcache-fields的Python项目详细描述
Version: | 0.9.2 |
---|---|
Docs: | https://django-dbcache-fields.readthedocs.io/ |
Download: | https://pypi.python.org/pypi/django_dbcache_fields |
Source: | https://github.com/maykinmedia/django-dbcache-fields |
Keywords: | django, database, cache, methods, decorator |
关于
此库提供了一个装饰符dbcache,用于缓存 数据库中的djangoModel方法。
它为每个 装饰。这意味着您可以使用所有orm函数,如聚合和 迁徙。可以使用现有字段或让^ TT1}$创建字段 为你。
也可以通过创建一个脏函数或 指示哪些其他模型影响此缓存值。默认情况下, 缓存值仅在保存模型时更新。
安装
您可以通过python包索引安装django_dbcache_字段 (pypi)或从源代码。
使用pip安装
$ pip install -U django_dbcache_fields
用法
要在项目中使用此功能,您需要遵循以下步骤:
安装django_dbcache_fields库:
$ pip install django_dbcache_fields
在django中将django_dbcache_fields添加到INSTALLED_APPS中 项目的settings.py:
INSTALLED_APPS=(# ...,'django_dbcache_fields',)
注意模块名中没有破折号,只有下划线。
一切都结束了。现在可以用 @dbcache。
示例
显示dbcache所做工作的简单示例:
fromdjango.dbimportmodelsfromdjango_dbcache_fields.decoratorsimportdbcacheclassIngredient(models.Model):name=models.CharField(max_length=100)price=models.DecimalField(max_digits=4,decimal_places=2)classPizza(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'])defget_price(self):returnself.ingredients.aggregate(total=Sum('price'))['total']orDecimal()
对get_price的每次调用通常都会执行数据库查询 计算所有配料的总价。然而,dbcache decorator导致向模型添加了一个新字段:aDecimalField 可以存储get_price函数的结果值,因此它不 需要反复执行相同的查询。