Как ограничить количество получаемых детей в django-treenode

У меня есть модель комментариев, где комментарий может быть корневым элементом или находиться под другим комментарием. Я использую REST API для получения полного дерева. Можно ли ограничить его глубину, чтобы, например, оно останавливалось после 3 узлов от каждого корневого комментария. Я хочу добавить функцию "больше" вместо того, чтобы показывать все дерево сразу.

` class CommentSerializer(serializers.ModelSerializer): leaf_nodes = serializers.SerializerMethodField()

class Meta:
    model = Comment
    fields = [
        'id',
        'body',
        "leaf_nodes"
    ]

def get_leaf_nodes(self, obj):
    return CommentSerializer(obj.get_children(), many=True).data

`

Я пытался просмотреть документацию на GitHub, но не нашел решения.

Я думаю, что ваша проблема находится на уровне DRF. Вы должны попробовать установить depth параметр для вашего сериализатора. Из документа:

Параметр depth должен быть установлен в целочисленное значение, которое указывает на глубину отношений, которые должны быть пройдены перед возвратом к плоскому представлению.

https://www.django-rest-framework.org/api-guide/serializers/#specifying-nested-serialization

В конце концов я обнаружил, что могу использовать obj.tn_level для проверки уровня глубины элемента. Я использовал два сериализатора. Первый - для первого раунда, где я ограничиваю уровень tn_level на основе const в настройках. Второй сериализатор использует параметр, который я передаю через контекст из представления в сериализатор, содержащий уровень последнего листа на экране, и через другой const из настроек я получаю больше узлов

Таким образом, я показываю часть узлов и, нажимая "more", загружаю несколько узлов каждый раз.

Вернуться на верх