3

我想对 mpttmodel 实例进行简单的分页。我有这个模型:

class Thing(MPTTModel):
    text = models.TextField()
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children')

问题是,当我尝试检索具有偏移量的对象时,例如:

Thing.objects.all()[5:10]

{% recursetree things %}模板标签引发异常:Caught AssertionError while rendering: Cannot reorder a query once a slice has been taken.

如何解决?

4

1 回答 1

2

recursetree标签需要一个没有应用数组切片限制语法的查询集。

您可以使用模型和管理器实例来构建更合适的查询集,或者调用recursetree并遍历节点,将它们过滤掉并recursetree在需要时再次从其中调用所选节点,但这有点复杂。

现在,看起来你可以实现你想要的:

nodes = [node.get_descendants(include_self=True) 
         for node in Thing.objects.all()[5:10]]

在模板中:

{% for node in nodes %}
    {% recursetree node %}...{% endrecursetree %}
{% endfor %}
于 2011-12-14T09:40:35.067 回答