Django mptt树分页
我想对mpttmodel实例进行简单的分页。我有这个模型:Django mptt树分页,django,django-mptt,Django,Django Mptt,我想对mpttmodel实例进行简单的分页。我有这个模型: class Thing(MPTTModel): text = models.TextField() parent = TreeForeignKey('self', null=True, blank=True, related_name='children') 问题是,当我尝试用偏移量检索对象时,例如: Thing.objects.all()[5:10] {%recursetree things%}模板标记引发异常:呈
class Thing(MPTTModel):
text = models.TextField()
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
问题是,当我尝试用偏移量检索对象时,例如:
Thing.objects.all()[5:10]
{%recursetree things%}
模板标记引发异常:呈现时捕获到断言错误:获取切片后无法重新排序查询。
如何解决它?标记需要传递一个查询集,该查询集没有应用数组切片限制语法
您可以使用来构造更合适的查询集,或者调用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 %}
您是否尝试过list(Thing.objects.all())[5:10]-这可能会起作用,因为Django必须在切片之前获取所有数据。您最初的调用在SQL中使用了一个LIMIT和OFFSET子句,您可以在python shell中这样做,看看它是否有效。