说,我有一个产品实例。链接到第4级子类别的产品实例。如果我只想获取根类别和4级子类别,则下面的查询足以以最少的数据库查询获取数据:
Product.objects.filter(active=True).prefetch_related('category__root',
'category')
如果我必须达到该产品类别的父级,并且为此使用get_ancestors()
方法,将发生近三倍的模式数据库查询。
如果我像下面这样使用get_ancestors()
方法编写查询,则数据库查询仍然很低。
Product.objects.filter(active=True).prefetch_related(
'category__root',
'category',
'category__parent',
'category__parent__parent',
'category__parent__parent__parent',
'category__parent__parent__parent__parent')
但是,当深度级别未知时,此查询无效。 有没有办法在上面的查询中动态预取父母?