Мастер "конструктор отчетов" позволяет собирать произвольные отчеты в пользовательском режиме, без программирования.
Ниже подробное описание каждого шага.
На данном этапе выбирается отчет для редактирования (если редактируется существующий).
Если требуется создать новый надо установить соответствующий флаг.
Флаг "Скопировать конфигурацию существующего" создаст новый отчет с полной копией конфигурации выбранного отчета.
На данном этапе настраиваются основные параметры отчета.
Для разработки отчета рекомендуется ставить флаг "Только для суперпользователей", чтобы пользователи не видели его, пока отчет не будет готов.
На данном этапе выбирается таблица, из данных которой будет собираться отчет.
Таблицы соответствуют пунктам из главной страницы админки.
Основные таблицы, которые используются для отчетов:
Билет - основная таблица, если требуется детальная информация по билетам.
Рейс - если требуется агрегированная информация по рейсам. В данной таблице есть все счетчики по этому рейсу (кол-во пассажиров, кол-во багажных, кол-во льготников и т.д). Если не требуется детализация по каждому билету предпочтительно использовать именно эту таблицу.
На данном этапе выбираются все поля, которые будут использоваться в отчете (для вывода, фильтрации и т.д).
Помимо выбора полей из отчета, здесь также есть возможность создавать вычисляемые поля (добавляются через "плюс" в среднем дереве).
Вычисляемые поля позволяют гибко создавать колонки в зависимости от требуемых условий.
Примеры выражений для вычисляемых полей:
Поле "Доля перевозчика билет" вычислит долю перевозчика исходя из его процента, указанном в справочнике:
python
(100 - F('contractor__calculation_ticket')) * F('summ_ticket') / 100
Если требуется объединить все междугородние виды маршрутов в один:
python
Case(When(route__type__title__iexact='Пригородный',then=Value('Пригород')), default=Value('Межгород'), output_field=CharField())
С вычисляемыми полями можно дальше работать как с обычными полями.
На данном этапе задаются фильтры, которые отсортируют данные по нужным требованиям.
Например, если требуется, чтобы в таблице билетов были выведены только билеты явившихся пассажиров, надо выбрать соответствующее поле из дерева и задать для него значение "да".
Если требуется съагрегировать данные (подсчитать суммы, кол-во и т.д), то данном этапе нужно выбрать поля:
На данном этапе задаются поле, по которым требуется отсортировать данные (по возрастанию или убыванию).
Важно! Если на этапе "Группировка" выбраны какие-либо поля, то для сортировки нужно выбирать именно их.
На данном этапе выбираются поля, которые будут выведены в таблице для пользователя (папка колонки), а также пользовательские фильтры.
Важно! В качестве пользовательского фильтра нужно обязательно выбрать дату с типом "в диапазоне", и проставить для нее флаг "обязательный", иначе выборка будет идти по всей таблице.
Для подведения итогов по колонке нужно установить соответствующий флаг в настройке колонки.
Также в настойке "Отчет" можно задать требуемый заголовок отчета (по умолчанию берется из наименования отчета).