我有一个自引用ManyToMany字段的模型:
class Suite(models.Model):
suites = models.ManyToManyField("self", related_name="parents",
summetrical=False
)
显示套件列表的当前用法是获取“master_suites”列表(父母为零的套件),并从递归执行“suite.subsuites.all()”开始,直到所有套件都用完为止。
目前的方法是为每个这样的套件生成一个数据库查询,我想为它添加缓存。
整个过程可以先装入套件列表,Suite.objects.all();以及子套件列表:Suite.subsuites.through.all()并使用这两个数据集构建树。
我想将此“逻辑”添加到ManyRelatedManager,缓存Suite.subsuites.through.all()结果,并在视图循环期间使用缓存。
但是我发现没办法设置我自己的自定义ManyRelatedManager ......我该怎么做?
答案 0 :(得分:1)
我认为你正在寻找一个错误的方向。您可能希望在这种情况下使用custom manager来构建查询集,缓存它以及您想要的任何其他内容。
用法,可能如下所示:
suite_tree = Suite.mymanager.construct_tree();