Представления (Views)

Представление - это механизм отображения данных в интерфейсе. В odoo представления описываются с помощью xml. Все особенности вы можете почерпнуть из документации. Если вкратце, то представления описывают как данные рекордсета будут выглядеть в интерфейсе пользователя. Т.е. для того, чтобы пользователь увидел поля, которые вы уже объявили в модели, а так же он мог вносить или изменять данные, для всего этого нужно создать представление.

Помимо всего прочего xml файлы с представлениями являются (файлами с данными)[расскажу позже], которые загружаются в базу в соответствующую модель с именем ir.ui.view. Данная модель имеет некоторое количество собственных служебных полей, а само описание представления находится внутри поля arch

Odoo предлагает для разработчиков достаточно много типов представлений. В документации вы можете увидеть детальное их описание, а так же описание атрибутов для правильного их применения.

xml файлы с описанием представлений должны быть прописаны в файле __manifest__.py:

Объявление файла с представлениями в манифесте

В данном примере мы рассмотрим 2 основных представления:

Представление типа Form

Представление типа Form всегда применяется для взаимодействия пользователя с одной конкретной записью. Т.е. когда вы нажимаете на конкретной записи то вы автоматически открываете представление типа Form. Помимо способов отображения система odoo так же предоставляет возможность создавать кнопки и отображать стадии объекта(про стадии я расскажу позже).

Для описание представления типа Form вы можете использовать обычный HTML. Остальные специальные теги вы можете изучить из документации. Или из исходных текстов самой odoo.

Представление типа Form

  1. Тег <header>- создает специальную область в верхней части формы
  2. Тег <button> здесь вы можете видеть пример оформления кнопки, попробуйте найти описание этого тега в документации, а так же обратите внимание какую функцию вызывает эта кнопка. Мы это уже делали в прошлых статьях
  3. Тут вы видите сразу несколько тегов <sheet>, <group> и <field>. Первые два помогают в оформлении, а вот последний <field> как раз и выводит поля. Для каждого тип поля есть свой виджет, но вы можете применять виджеты других типов полей к своему. Попробуйте найти описание тегов в документации.

Представление тип Tree(List)

Представление типа Tree - наверное самое распространенное представление, позволяет отображать набор записей в виде таблицы.

Представление типа Form

Здесь вы можете видеть описание представления в виде списка.

Применение изменений

Обратите внимание что при изменении файла система не подхватит их автоматически, для этого нужно обновить модуль в котором находится xml файл. Сделать это можно как описано ранее.

Добавление поля

Ели помните, то у каждой записи есть поля, которые автоматически создаются системой. Поэтому давайте для практического примера добавим в наши представления поле id:

Добавление поля ID

  1. Добавляем отображение поля ID в представление типа Tree
  2. Добавляем отображение поля ID в представление типа Form

Задания для самостоятельного повторения:

  1. Добавьте в представлении типа Form атрибут, который сделает его только для чтения, см. документацию или примеры в исходных кодах системы
  2. Попробуйте сделать поле невидимым в одном из представлений, см. документацию
  3. Используя знания о полях добавьте любое поле и объявите его в любом из представлений.

Обсуждение

Обсудить, указать на ошибки и опечатки можно здесь