Если ваше приложение (как отдельный модуль) имеется возможность показывать меню с других приложений (связанных с этим в настройках), тогда вам необходимо добавить в ваше меню возможность вывода этих данных.
Меню -> Настройки -> Плагины -> Отделения -> Связать с этим плагином
Выбрать Бухгалтерия и связать
Теперь ваше приложение money будет искать наличие субменю для вывода в меню своего приложения. В данном случае мы рассматриваем вывод меню для фильтрации записей в money относительно склада, к которому привязана запись цены в модели.
Пример приводится на создании субменю между приложениями money и storehouse. В приложении money будет выводится данные из приложения storehouse не напрямую, а через хаб в приложении plugins.utils
Создаем файлы templatetags:
storehouse/templatetags/__init__.py
storehouse/templatetags/sidebar_storehouse_related_submenu_tags.py
from django import template
from .models import Storehouses
register = template.Library()
@register.inclusion_tag('storehouse/related/tags/sidebar_storehouse_related_submenu_tags.html', takes_context=True)
def show_menu(context):
    query = Storehouses.objects.all()
    context['storehouses'] = query
    return context
Создаем файл templates:
storehouse/templates/storehouse/related/load_sidebar_storehouse_related_submenu_tags.html
этот файл будет вызывать связанное приложение через include
{% load sidebar_storehouse_related_submenu_tags %}
{% show_menu %}
Создаем файл templates:
storehouse/templates/storehouse/related/tags/sidebar_storehouse_related_submenu_tags.html
# sidebar_storehouse_related_submenu_tags.html
<!-- не используйте кнопку submit и form и csrf токен в related html файлах-->
<!--begin:Menu item-->
<div data-kt-menu-trigger="click" class="menu-item menu-accordion show">
    <!--begin:Menu link-->
    <span class="menu-link">
        <span class="menu-icon">
            <!--begin::Svg Icon | path: icons/duotune/communication/com012.svg-->
            <span class="svg-icon svg-icon-2">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                    <path opacity="0.3"
                          d="M20 3H4C2.89543 3 2 3.89543 2 5V16C2 17.1046 2.89543 18 4 18H4.5C5.05228 18 5.5 18.4477 5.5 19V21.5052C5.5 22.1441 6.21212 22.5253 6.74376 22.1708L11.4885 19.0077C12.4741 18.3506 13.6321 18 14.8167 18H20C21.1046 18 22 17.1046 22 16V5C22 3.89543 21.1046 3 20 3Z"
                          fill="currentColor"/>
                    <rect x="6" y="12" width="7" height="2" rx="1" fill="currentColor"/>
                    <rect x="6" y="7" width="12" height="2" rx="1" fill="currentColor"/>
                </svg>
            </span>
            <!--end::Svg Icon-->
        </span>
        <span class="menu-title">Модуль "Склады"</span>
        <span class="menu-arrow"></span>
    </span>
    <!--end:Menu link-->
    <!--begin:Menu sub-->
    <div class="menu-sub menu-sub-accordion ">
        <!--begin:Menu item-->
        <div class="menu-item">
            <!--begin:Menu link-->
            <div class="list-group">
                <input type="hidden" name="relateddata" value="{'storehouse' : {'category': 'filterform'}}">
                <select name="storehouse" id="storehouse">
                    {% for item in storehouses %}
                        <option value="{{ item.id }}">{{ item.name }}</option>
                    {% endfor %}
                </select>
                <br>
            </div>
            <!--end:Menu link-->
        </div>
        <!--end:Menu item-->
    </div>
    <!--end:Menu sub-->
</div>
Файл related.py содержит каждое приложение crm hub. Файл содержит класс class AppRelated, который имеет разные методы для работы с другими приложениями. Этот класс и методы запрашивает встроеное приложение plugins, которое и является хабом для других приложенией
Файл storehouse/related.py содержит не активный метод submenuImportRelated, который отвечает за возврат строки с содержанием ссылки на html файл для include
    def submenuImportRelated(self, **kwargs):
        pass
изменяем метод
    def submenuImportRelated(self, **kwargs):
        return 'storehouse/related/load_sidebar_storehouse_related_submenu_tags.html'
Каждое приложение имеет стандартный вид распложения html блоков. Вывод основного меню каждого приложения выглядит так:
money/templates/money/money_list.html
{% extends "base.html" %}
{% load money_template_tags %}
{% block title %}{{ title }} - {{ block.super }}{% endblock %}
{% block sidebar %}    
    {% include 'include/_sidebar_money.html' %}
{% endblock %}
....
мы подгружаем файл _sidebar_money.html, который запускает load tags и вызывает метод show_menu
# _sidebar_money.html
{% load sidebar_money_menu_tags %}
{% show_menu %}
money/templatetags/sidebar_money_menu_tags.py содержит метод show_menu, который вызывает из ядра CRM HUB класс RelatedMixin, который позволяет взаимодействовать приложениям друг с другом. Ядро в данном случае подразумевается основные приложения CRM HUB, которые встроены в базовую версию.
# money/templatetags/sidebar_money_menu_tags.py
from django import template
from plugins.utils import RelatedMixin
register = template.Library()
@register.inclusion_tag('money/sidebar_money_menu_tags.html', takes_context=True)
def show_menu(context):
    Relateddata = RelatedMixin()
    Relateddata.related_module_name = 'money'
    related_submenu = Relateddata.relatedImportSubmenu()
    context['relatedmenu'] = related_submenu
    return context
мы добавляем в context['relatedmenu'] вывод данных из всех связанных приложенией для money.
Файл money/templates/money/sidebar_money_menu_tags.html выводит суб меню всех связанных приложений в виде формы
<div class="menu menu-column menu-rounded menu-sub-indention fw-semibold fs-6" id="#kt_aside_menu" data-kt-menu="true">
    <!--begin:Menu NEW item-->
    <div class="menu-item pt-5">
        <!--begin:Menu content-->
        <div class="menu-content">
            <span class="menu-heading fw-bold text-uppercase fs-7">Фильтрация</span>
        </div>
        <!--end:Menu content-->
    </div>
<!-- используем этот код если модуль подразумевает возможность поиска, фильтарции или меню от других приложенией -->
    <form action="" method="get">
        {% csrf_token %}
        {% for key, value in relatedmenu.items %}
            {% for k2, v2 in value.items %}
                {% if k2 == 'submenu_import' %}
                    {% include v2 %}
                {% endif %}
            {% endfor %}
        {% endfor %}
    <br>
    <div class="d-flex flex-row justify-content-center align-items-center">
    <button type="submit" class="btn btn-secondary text-center" id="button-addon2">Сортировать</button>
    </div>
    </form>
</div>
Пример того, как это выглядит, приложение money связано с приложениями orders и storehouse. При выводе меню, показываются данные для фильтрации данных бухгалтерии, где мы можем отсортировать их в соответствии с логикой каждого приложения отдельно.
