В этом блоге объясняется, как создать представление календаря в Odoo 19, используя простой пример пользовательского модуля.
Содержание
Как работает представление календаря в Odoo.
Календарный вид позволяет пользователям просматривать записи, упорядоченные по дням, неделям или месяцам. Каждая запись отображается в календаре как событие на основе полей даты начала и окончания. Пользователи могут взаимодействовать с этими событиями непосредственно из интерфейса календаря.
Календарный вид особенно полезен в следующих случаях:
- Записи зависят от дат начала и окончания.
- Необходимо составить график и спланировать действия.
- Визуальный обзор эффективнее, чем списковые или формальные представления.
Перед созданием календарного представления убедитесь в следующем:
- Создан пользовательский модуль.
- Модель содержит как минимум одно поле типа Datetime или Date.
Шаг 1: Создание модели
Сначала определите модель, содержащую необходимые поля дат . Календарный вид должен иметь поле начальной даты и, при необходимости, поле конечной даты.
from odoo import models, fields
class CustomEvent(models.Model):
_name = 'custom.event'
_description = 'Custom Calendar Event'
name = fields.Char(string='Event Title', required=True)
start_date = fields.Datetime(string='Start Date', required=True)
end_date = fields.Datetime(string='End Date')
description = fields.Text(string='Description')
Поле start_date является обязательным для корректной работы календаря. Поле end_date является необязательным, но рекомендуется для лучшей визуализации.
Шаг 2: Настройка представления календаря
Далее создайте представление календаря с помощью XML.
<odoo>
<record id="view_custom_event_calendar" model="ir.ui.view">
<field name="name">custom.event.calendar</field>
<field name="model">custom.event</field>
<field name="arch" type="xml">
<calendar
string="Custom Events"
date_start="start_date"
date_stop="end_date">
<field name="name"/>
<field name="description"/>
</calendar>
</field>
</record>
</odoo>
В режиме календаря доступно несколько атрибутов, таких как date_start и date_end . Давайте рассмотрим их по порядку.
- date_start : Поле, используемое в качестве даты начала события.
- date_stop : Поле, используемое в качестве даты окончания события.
- строка : Заголовок, отображаемый в календаре
Шаг 3: Создайте окно действий
Для отображения календаря в Odoo его необходимо связать с действием.
<record id="action_custom_event" model="ir.actions.act_window">
<field name="name">Custom Events</field>
<field name="res_model">custom.event</field>
<field name="view_mode">calendar,list,form</field>
</record>
Параметр view_mode включает календарь, поэтому отображение календаря доступно по умолчанию.
Шаг 4: Добавьте пункт меню
Наконец, добавьте пункт меню для доступа к календарю из интерфейса Odoo.
<menuitem id="menu_custom_event_root"
name="Custom Events"/>
<menuitem id="menu_custom_event"
name="Calendar"
parent="menu_custom_event_root"
action="action_custom_event"/>
После обновления модуля календарный вид станет доступен из меню.

- В режиме календаря поддерживается перетаскивание, что позволяет пользователям изменять даты событий непосредственно из пользовательского интерфейса.
- Фильтры и группировки можно применять прямо в окне поиска.
- Если вместо поля "Дата и время" используется только поле "Дата", события будут отображаться как события на весь день.
- Календарные представления также можно раскрашивать, используя дополнительные атрибуты, такие как цвет.
Календарные представления в Odoo 19 предоставляют понятный и интерактивный способ управления записями, привязанными ко времени. Определив соответствующие поля модели, создав XML-файл календарного представления и связав его с действиями и меню, вы можете легко интегрировать функциональность планирования в свои пользовательские модули.
Этот подход может быть распространен на различные бизнес-сценарии, такие как планирование задач, составление графиков встреч и управление ресурсами.