Django的预取相关系统的实用程序和增强功能库。
django-prefetch-utils的Python项目详细描述
此库当前提供了 prefetch_related_objects使用identity map来 自动减少预取时执行的查询数。
例如,考虑以下数据模型:
class Toy(models.Model): dog = models.ForeignKey('dogs.Dog') class Dog(models.Model): name = models.CharField() favorite_toy = models.ForeignKey('toys.Toy', null=True)
使用这个库,我们不需要对 从该对象开始对favorite_toy执行预取 已作为toy_set:
预取的一部分提取>>> dog = Dog.objects.prefetch_related('toys', 'favorite_toy')[0] SELECT * from dogs_dog limit 1; SELECT * FROM toys_toy where toys_toy.dog_id IN (1); >>> dog.favorite_toy is dog.toy_set.all()[0] # no queries done True
计划在将来的版本中将库的范围增加到 提供使用prefetch_related的其他工具。
- 自由软件:BSD 3条款许可证
安装
pip install django-prefetch-utils
更改日志
0.1.0(2019-07-16)
- pypi上的第一个版本。