【问题标题】:SQL query to avoid fetching the entire nested set when parts of it are collapsed by the userSQL查询,以避免在用户折叠部分嵌套集时获取整个嵌套集
【发布时间】:2009-05-21 17:22:12
【问题描述】:

我试图通过提供比管理员中的平面列表更友好的东西来将 django-mptt 和 contrib.admin 联系在一起。因为树应该很大(否则我不会使用嵌套集),用户应该能够展开和折叠它的一部分。

当用户展开或折叠或展开一个分支(使用 ajax)时,还会设置一个 cookie,其中包含一个逗号分隔的折叠分支列表。这样,下次这个用户访问我的 django-mptt 驱动模型的管理员时,我可以向他展示他离开它的确切状态的树。现在我想使用这个折叠分支列表,通过仅获取树的所需部分来减轻数据库的负担。

有没有办法有效地做到这一点?我用谷歌搜索的解决方案是对每个分支进行查询,这样他们就可以避免在分支折叠时进行查询,但这对我来说看起来不是很有效。也许可以通过固定数量的查询来实现?

【问题讨论】:

    标签: sql django nested-sets django-mptt


    【解决方案1】:

    你并没有真正解释你在做什么,所以有点难以帮助。 (你对树做了什么?你如何显示它?你希望用户能够做什么?)

    Django-MPTT 树中的每个元素都有一个get_children() 方法 - 使用可选的include_self=True 参数,您可以获得元素及其所有子元素的列表。您可以使用它来预过滤子树,以便只显示它的一部分,如果这是您想要的。

    如果您希望用户能够在不重新加载页面的情况下动态展开和折叠部分树,则需要使用 AJAX。周围有各种支持 AJAX 的树形视图控件 - 我自己使用 jQuery 编写了一个 - 毫无疑问,其中一个会按照你想要的方式做一些事情。

    【讨论】:

    • 更新了我的帖子并进行了一些澄清。
    猜你喜欢
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多