Представления (Views)
Представление - это механизм отображения данных в интерфейсе. В odoo представления описываются с помощью xml. Все особенности вы можете почерпнуть из документации. Если вкратце, то представления описывают как данные рекордсета будут выглядеть в интерфейсе пользователя. Т.е. для того, чтобы пользователь увидел поля, которые вы уже объявили в модели, а так же он мог вносить или изменять данные, для всего этого нужно создать представление.
Помимо всего прочего xml файлы с представлениями являются (файлами с данными)[расскажу позже], которые загружаются в базу в соответствующую модель с именем ir.ui.view
. Данная модель имеет некоторое количество собственных служебных полей, а само описание представления находится внутри поля arch
Odoo предлагает для разработчиков достаточно много типов представлений. В документации вы можете увидеть детальное их описание, а так же описание атрибутов для правильного их применения.
xml файлы с описанием представлений должны быть прописаны в файле __manifest__.py
:
В данном примере мы рассмотрим 2 основных представления:
Представление типа Form
Представление типа Form всегда применяется для взаимодействия пользователя с одной конкретной записью. Т.е. когда вы нажимаете на конкретной записи то вы автоматически открываете представление типа Form. Помимо способов отображения система odoo так же предоставляет возможность создавать кнопки и отображать стадии объекта(про стадии я расскажу позже).
Для описание представления типа Form вы можете использовать обычный HTML
. Остальные специальные теги вы можете изучить из документации. Или из исходных текстов самой odoo.
- Тег
<header>
- создает специальную область в верхней части формы - Тег
<button>
здесь вы можете видеть пример оформления кнопки, попробуйте найти описание этого тега в документации, а так же обратите внимание какую функцию вызывает эта кнопка. Мы это уже делали в прошлых статьях - Тут вы видите сразу несколько тегов
<sheet>
,<group>
и<field>
. Первые два помогают в оформлении, а вот последний<field>
как раз и выводит поля. Для каждого тип поля есть свой виджет, но вы можете применять виджеты других типов полей к своему. Попробуйте найти описание тегов в документации.
Представление тип Tree(List)
Представление типа Tree - наверное самое распространенное представление, позволяет отображать набор записей в виде таблицы.
Здесь вы можете видеть описание представления в виде списка.
Применение изменений
Обратите внимание что при изменении файла система не подхватит их автоматически, для этого нужно обновить модуль в котором находится xml файл. Сделать это можно как описано ранее.
Добавление поля
Ели помните, то у каждой записи есть поля, которые автоматически создаются системой. Поэтому давайте для практического примера добавим в наши представления поле id
:
- Добавляем отображение поля
ID
в представление типа Tree - Добавляем отображение поля
ID
в представление типа Form
Задания для самостоятельного повторения:
- Добавьте в представлении типа Form атрибут, который сделает его только для чтения, см. документацию или примеры в исходных кодах системы
- Попробуйте сделать поле невидимым в одном из представлений, см. документацию
- Используя знания о полях добавьте любое поле и объявите его в любом из представлений.
Обсуждение
Обсудить, указать на ошибки и опечатки можно здесь