0

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

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

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

4

1 回答 1

0

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

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

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

于 2009-05-21T19:20:35.273 回答