如何使用django prefetch_related在mptt树上预取一个孩子的父母?

时间:2019-05-02 14:34:22

标签: django prefetch mptt

说,我有一个产品实例。链接到第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')

但是,当深度级别未知时,此查询无效。 有没有办法在上面的查询中动态预取父母?

0 个答案:

没有答案