我想对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.
如何解决?
答案 0 :(得分:2)
recursetree
标记需要传递给它的查询集,该查询集没有应用数组切片限制语法。
您可以使用model and manager instances构建更合适的查询集,也可以调用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 %}