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 に答える