Mptt дерева нумерации - PullRequest
       18

Mptt дерева нумерации

2 голосов
/ 14 декабря 2011

Я хочу сделать простую нумерацию экземпляров 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.

Как это решить?

1 Ответ

2 голосов
/ 14 декабря 2011

Для тега 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 %}
...