Модели системы: описание полей
Обновлено: 07 Декабрь 2025
Версия: 2.2
Для правильной работы с API и шаблонами уведомлений важно знать точные названия полей моделей системы. Ниже приведено подробное описание каждой модели, доступной через API.
Сотрудник (Employee)
Модель: personal.models.Employee
Доступные поля через API:
| Поле | Тип | Описание | Пример |
|---|---|---|---|
id |
Integer | Уникальный идентификатор | 1 |
display_name |
String | Отображаемое имя | "Иванов Иван Иванович" |
first_name |
String | Имя | "Иван" |
last_name |
String | Фамилия | "Иванов" |
middle_name |
String | Отчество | "Иванович" |
title |
String | Должность | "Менеджер проектов" |
email |
String | Email адрес | "ivanov@example.com" |
mobile_number |
String | Мобильный телефон | "+7 (999) 123-45-67" |
telephone_number |
String | Рабочий телефон | "+7 (495) 123-45-67" |
manager |
Integer (FK) | ID руководителя | 5 |
manager_name |
String | Имя руководителя (read-only) | "Петров Петр Петрович" |
org |
Integer (FK) | ID подразделения | 10 |
org_name |
String | Название подразделения (read-only) | "Отдел разработки" |
status |
String | Статус сотрудника | "working", "vacation", "dismissed" |
hire_date |
Date | Дата приема на работу | "2020-01-15" |
avatar |
String (URL) | URL аватара | "/media/avatars/user.jpg" |
created_at |
DateTime | Дата создания | "2020-01-15T10:00:00Z" |
Пример использования в шаблоне уведомления:
{
"subject": "Задача назначена: {title}",
"body": "Здравствуйте, {executor_str}!\n\nВам назначена задача: {title}\n\nИсполнитель: {executor_str}\nРуководитель: {manager_name}"
}
Примечание: В шаблонах уведомлений доступны как прямые поля объекта (например, {executor.display_name}), так и вычисляемые значения через extra_context (например, {executor_str}).
Пользователь (User)
Модель: users.models.CustomUser
Доступные поля через API:
| Поле | Тип | Описание | Пример |
|---|---|---|---|
id |
Integer | Уникальный идентификатор | 1 |
email |
String | Email адрес (уникальный) | "user@example.com" |
display_name |
String | Отображаемое имя | "Иванов Иван" |
first_name |
String | Имя | "Иван" |
last_name |
String | Фамилия | "Иванов" |
middle_name |
String | Отчество | "Иванович" |
title |
String | Должность/роль | "Разработчик" |
mobile_number |
String | Мобильный телефон | "+7 (999) 123-45-67" |
avatar |
String (URL) | URL аватара | "/media/avatars/user.jpg" |
is_staff |
Boolean | Является ли сотрудником | true |
is_active |
Boolean | Активен ли пользователь | true |
date_joined |
DateTime | Дата регистрации | "2020-01-15T10:00:00Z" |
employee_id |
Integer | ID связанного сотрудника (read-only) | 5 |
Пример использования в шаблоне уведомления:
{
"subject": "Добро пожаловать, {user_name}!",
"body": "Здравствуйте, {user_name}!\n\nВаш email: {user.email}\nДата регистрации: {user.date_joined}"
}
Договор (Contract)
Модель: finance.contracts.Contract
Доступные поля через API:
| Поле | Тип | Описание | Пример |
|---|---|---|---|
id |
Integer | Уникальный идентификатор | 1 |
display_name |
String | Отображаемое название | "Договор №123 от 01.01.2024" |
number |
String | Номер договора | "123/2024" |
date |
Date | Дата договора | "2024-01-01" |
date_expiry |
Date | Дата окончания | "2024-12-31" |
client |
Integer (FK) | ID клиента | 10 |
client_name |
String | Название клиента (read-only) | "ООО Рога и Копыта" |
contractor |
Integer (FK) | ID подрядчика | 20 |
contractor_name |
String | Название подрядчика (read-only) | "ООО Подрядчик" |
recipient |
Integer (FK) | ID получателя | 30 |
recipient_name |
String | Название получателя (read-only) | "ООО Получатель" |
status |
String | Статус договора | "planing", "actual", "noactual" |
currency |
String | Валюта | "RUB", "USD", "EUR" |
currency_price |
Decimal | Сумма договора | "1000000.00" |
pay_method |
String | Способ оплаты | "cash", "cashless" |
pay_date |
Date | Дата оплаты | "2024-06-01" |
prolong |
Boolean | Автопродление | true |
note |
String | Примечание | "Дополнительная информация" |
created_at |
DateTime | Дата создания | "2024-01-01T10:00:00Z" |
modified_at |
DateTime | Дата изменения | "2024-01-15T12:00:00Z" |
Пример использования в шаблоне уведомления:
{
"subject": "Договор {number} истекает",
"body": "Договор {number} от {date} с клиентом {client_name} истекает {date_expiry}.\n\nСумма: {currency_price} {currency}"
}
Заявка (Request)
Модель: servicedesk.requests.Request
Доступные поля через API:
| Поле | Тип | Описание | Пример |
|---|---|---|---|
id |
Integer | Уникальный идентификатор | 1 |
title |
String | Название заявки | "Проблема с принтером" |
theme |
String | Тема заявки | "Техническая поддержка" |
message |
String | Текст заявки | "Принтер не печатает" |
client |
Integer (FK) | ID клиента | 10 |
source |
Integer (FK) | ID источника | 1 |
type |
Integer (FK) | ID типа заявки | 5 |
type_name |
String | Название типа (read-only) | "Инцидент" |
category |
Integer (FK) | ID категории | 3 |
priority |
Integer (FK) | ID приоритета | 2 |
priority_name |
String | Название приоритета (read-only) | "Высокий" |
impact |
Integer (FK) | ID влияния | 1 |
status |
Integer (FK) | ID статуса | 1 |
status_name |
String | Название статуса (read-only) | "В работе" |
executoruser |
Integer (FK) | ID исполнителя (пользователь) | 15 |
executor_name |
String | Имя исполнителя (read-only) | "Петров Петр" |
executorgroup |
Integer (FK) | ID группы исполнителей | 20 |
creator |
Integer (FK) | ID создателя | 12 |
creator_name |
String | Имя создателя (read-only) | "Иванов Иван" |
startdate |
DateTime | Дата начала | "2024-01-15T10:00:00Z" |
duedate |
DateTime | Срок выполнения | "2024-01-20T18:00:00Z" |
deadline |
DateTime | Дедлайн | "2024-01-20T18:00:00Z" |
responsetime |
DateTime | Время отклика | "2024-01-15T11:00:00Z" |
respondedtime |
DateTime | Время ответа | "2024-01-15T12:00:00Z" |
resolvedtime |
DateTime | Время решения | "2024-01-18T15:00:00Z" |
createdtime |
DateTime | Дата создания | "2024-01-15T10:00:00Z" |
lastedittime |
DateTime | Дата последнего изменения | "2024-01-18T15:00:00Z" |
is_draft |
Boolean | Черновик | false |
Пример использования в шаблоне уведомления:
{
"subject": "Новая заявка: {title}",
"body": "Создана новая заявка:\n\nНазвание: {title}\nТип: {type_name}\nПриоритет: {priority_name}\nСтатус: {status_name}\nИсполнитель: {executor_name}\nСрок: {duedate}"
}
Проект (Project)
Модель: projects.models.Project
Доступные поля через API:
| Поле | Тип | Описание | Пример |
|---|---|---|---|
id |
UUID | Уникальный идентификатор (UUID) | "550e8400-e29b-41d4-a716-446655440000" |
name |
String | Название проекта | "Разработка нового сайта" |
code |
String | Код проекта | "PROJ-001" |
description |
String | Описание проекта | "Полная разработка корпоративного сайта" |
manager |
Integer (FK) | ID менеджера проекта (Employee) | 5 |
manager_name |
String | Имя менеджера (read-only) | "Иванов Иван Иванович" |
status |
Integer | Статус проекта | 1 (Initiation), 2 (Planing), 3 (Execution), 4 (Completion), 5 (Control), 6 (Completed), 7 (Canceled) |
status_display |
String | Название статуса (read-only) | "В работе" |
contractor |
Integer (FK) | ID подрядчика | 20 |
owner |
String | Функциональный заказчик | "ООО Заказчик" |
budget |
Decimal | Бюджет проекта | "5000000.00" |
type |
Integer (FK) | ID типа проекта | 3 |
class_importance |
String | Класс важности | "A" (высокий), "B" (средний), "C" (низкий) |
class_deadline |
String | Класс дедлайна | "A", "B", "C" |
class_budget |
String | Класс бюджета | "A", "B", "C" |
goals_justification |
String | Цели и обоснование (HTML) | "<p>Цель проекта...</p>" |
expected_results |
String | Ожидаемые результаты (HTML) | "<p>Результаты...</p>" |
scope_description |
String | Описание области (HTML) | "<p>Область...</p>" |
created_at |
DateTime | Дата создания | "2024-01-01T10:00:00Z" |
modified_at |
DateTime | Дата изменения | "2024-01-15T12:00:00Z" |
Пример использования в шаблоне уведомления:
{
"subject": "Проект {name} - обновление статуса",
"body": "Проект {name} (код: {code}) изменил статус на {status_display}.\n\nМенеджер: {manager_name}\nБюджет: {budget}"
}
Задача (Task)
Модель: tasks.models.Task
Доступные поля через API:
| Поле | Тип | Описание | Пример |
|---|---|---|---|
id |
Integer | Уникальный идентификатор | 1 |
title |
String | Название задачи | "Разработать API" |
description |
String | Описание задачи | "Создать REST API для модуля" |
author |
Integer (FK) | ID автора задачи (Employee) | 5 |
author_name |
String | Имя автора (read-only) | "Иванов Иван Иванович" |
executor |
Integer (FK) | ID исполнителя (Employee) | 10 |
executor_name |
String | Имя исполнителя (read-only) | "Петров Петр Петрович" |
control |
Integer (FK) | ID контролера (Employee) | 15 |
project |
Integer (FK) | ID проекта | 100 |
project_name |
String | Название проекта (read-only) | "Разработка нового сайта" |
request |
Integer (FK) | ID связанной заявки | 50 |
duedate |
DateTime | Срок выполнения | "2024-01-20T18:00:00Z" |
completedate |
Date | Дата выполнения | "2024-01-18" |
completed |
Boolean | Выполнена ли задача | false |
canceled |
Boolean | Отменена ли задача | false |
priority |
Boolean | Приоритетная задача | true |
start_date |
DateTime | Дата начала (для диаграммы Гантта) | "2024-01-15T09:00:00Z" |
duration_days |
Integer | Длительность в днях | 5 |
progress |
Integer | Прогресс выполнения (0-100) | 50 |
is_milestone |
Boolean | Является ли контрольной точкой | false |
is_project_lifecycle |
Boolean | Является ли задачей жизненного цикла проекта | false |
result_type |
String | Тип результата контрольной точки | "event", "document" |
parent |
Integer (FK) | ID родительской задачи | 2 |
created_at |
DateTime | Дата создания | "2024-01-15T10:00:00Z" |
modified_at |
DateTime | Дата изменения | "2024-01-18T15:00:00Z" |
Пример использования в шаблоне уведомления:
{
"subject": "Просроченная задача: {title}",
"body": "Здравствуйте, {executor_str}!\n\nУ вас есть просроченная задача:\n\nНазвание: {title}\nОписание: {description}\nСрок выполнения: {duedate}\nПроект: {project_str}\n\nПожалуйста, выполните задачу или обновите срок выполнения.\n\nСсылка: {url}"
}
Важно: В шаблонах уведомлений для задач доступны следующие вычисляемые поля через extra_context:
{executor_str}- строковое представление исполнителя (обычноexecutor.display_name){project_str}- строковое представление проекта (обычноproject.name){url}- URL задачи (черезtask.get_absolute_url())
Уведомление (Notification)
Модель: system.notifications.Notification
Доступные поля через API:
| Поле | Тип | Описание | Пример |
|---|---|---|---|
id |
Integer | Уникальный идентификатор | 1 |
title |
String | Заголовок уведомления | "Новая задача" |
message |
String | Текст уведомления | "Вам назначена новая задача" |
user |
Integer (FK) | ID пользователя | 10 |
content_type |
Integer (FK) | ID типа контента | 15 |
content_type_name |
String | Название типа контента (read-only) | "task" |
object_id |
String | ID связанного объекта | "123" |
cached_url |
String (URL) | Кэшированный URL объекта | "/tasks/123/" |
is_read |
Boolean | Прочитано ли уведомление | false |
created_at |
DateTime | Дата создания | "2024-01-15T10:00:00Z" |
Пример использования:
Уведомления обычно не используются напрямую в шаблонах модулей, но доступны через API для отображения в интерфейсе модуля.
Работа с полями в шаблонах уведомлений
При создании шаблонов уведомлений в module.json вы можете использовать следующие способы доступа к полям:
- Прямой доступ к полям объекта:
json
{
"subject": "Задача: {title}",
"body": "Исполнитель: {executor.display_name}\nПроект: {project.name}"
}
- Использование вычисляемых значений через extra_context: В коде модуля при отправке уведомления:
python
send_notify(
obj=task,
recipients=[user],
template_name='module_code_TemplateName',
extra_context={
'executor_str': str(task.executor),
'project_str': str(task.project) if task.project else 'N/A',
'user_name': str(user.get_full_name() or user.username)
}
)
В шаблоне:
json
{
"subject": "Задача: {title}",
"body": "Исполнитель: {executor_str}\nПроект: {project_str}"
}
- Форматирование дат: Django автоматически форматирует даты в шаблонах. Для кастомного форматирования используйте фильтры Django в
extra_context.
Типы данных полей
- String - строка текста
- Integer - целое число
- Decimal - десятичное число (деньги, проценты)
- Boolean - логическое значение (
true/false) - Date - дата в формате
YYYY-MM-DD - DateTime - дата и время в формате ISO 8601
- FK - внешний ключ (Foreign Key), возвращает ID связанного объекта
- UUID - уникальный идентификатор в формате UUID
Важные замечания
- Read-only поля - поля с пометкой
(read-only)вычисляются автоматически и не могут быть изменены через API. - Связанные объекты - при работе с API связанные объекты (например,
manager,project) возвращаются как ID. Для получения полной информации используйте отдельный запрос к API или используйте вычисляемые поля (например,manager_name,project_name). - Null значения - многие поля могут быть
null. Всегда проверяйте наличие значения перед использованием в шаблонах. - Форматирование - для форматирования дат, чисел и других значений в шаблонах уведомлений используйте
extra_contextв коде модуля.