【发布时间】:2019-11-21 03:55:58
【问题描述】:
我正在使用来自django mptt library 的get_cached_trees() 方法
如文档中所述:
以 MPTT 左(深度优先)顺序获取模型对象的列表/查询集,并在每个节点上缓存子节点和父节点。这允许向上和向下遍历树,而无需进一步查询。
我正在跟踪这样的数据库查询:
>>> from django.conf import settings
>>> settings.DEBUG = True
>>> from django.db import connection
>>> Model.objects.count()
>>> # python 3 uses print()
>>> print(len(connection.queries))
取自here。
那我做
MyModel.objects.count()
print(len(connection.queries)) # 1
然后
first_object = MyModel.objects.first()
root_object = first_object.get_root()
print(len(connection.queries)) # 3
然后
cache = root_object.get_cached_trees()
print(len(connection.queries)) # 4
然后
cache[0].get_descendants()
print(len(connection.queries)) # 5
为什么在最后一步它给了我 5?它不应该对数据库进行查询。
【问题讨论】:
标签: python django django-mptt