Как в django Mptt получить потомка?

Привет, мне надо получить дочерний элемент в django-mptt
Родительский стандартно получается так:
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)

Дочерний нужно получать в модели, так как потом данные сериализуются и выводятся в шаблон ангуларом
  • Вопрос задан
  • 811 просмотров
Решения вопроса 1
@walkaway Автор вопроса
Привет, в общем решил проблему сам, но руки написать сюда решение дошли только сегодня. Начну с того, что решение топорное и не подходит для случаев когда степень вложенности не ограничена (у меня по тз чётко указано 2 степени). В общем проблема решилась когда я посмотрел в json категорий и увидел что mptt динамически создает несколько полей в том числе поле "level" в котором отсчёт идёт от нуля. и в шаблоне у меня получилось так:
<li class="filter-li" ng-repeat="category in categories">
                        <a ng-href="products/category/{{ category.seo_name }}" class="filter-link active" ng-if="category.level == 0">{{ category.name }}<span
                                class="filter-count">2.2k</span></a>
                        <ul class="filter-ul filter-2nd" ng-if="category.level > 0">
                            <li class="filter-li">
                                <a ng-href="products/category/{{ category.seo_name }}" class="filter-link active"> -> {{ category.name }}
                                    <span class="filter-count">2.2k</span>
                                </a>
                            </li>
                        </ul>
                    </li>

Json, кстати выглядит так:
[
    {
        "id": 3,
        "name": "Ботинки",
        "description": "",
        "visible": true,
        "products_count": 0,
        "products_count_cache": 0,
        "seo_name": "botinki",
        "seo_title": "",
        "seo_desc": "",
        "seo_keywords": "",
        "lft": 1,
        "rght": 6,
        "tree_id": 2,
        "level": 0,
        "parent": null
    },
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы