О полях view_get
В каждой модели Odoo есть метод fields_view_get
, который вы можете перезаписать.этот метод выполняется после загрузки кода XML представления и перед его отображением в HTML.Это означает, что вы можете делать некоторые динамические изменения в представлениях.Ищите def fields_view_get
в модулях Odoo, вы найдете много случаев.Пример:
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False,
submenu=False):
result = super(AccountMoveLine, self).fields_view_get(view_id,
view_type,
toolbar=toolbar,
submenu=submenu)
doc = etree.XML(result['arch'])
if view_type == 'tree' and self._module == 'account_payment_order':
if not doc.xpath("//field[@name='balance']"):
for placeholder in doc.xpath(
"//field[@name='amount_currency']"):
elem = etree.Element(
'field', {
'name': 'balance',
'readonly': 'True'
})
orm.setup_modifiers(elem)
placeholder.addprevious(elem)
if not doc.xpath("//field[@name='amount_residual_currency']"):
for placeholder in doc.xpath(
"//field[@name='amount_currency']"):
elem = etree.Element(
'field', {
'name': 'amount_residual_currency',
'readonly': 'True'
})
orm.setup_modifiers(elem)
placeholder.addnext(elem)
if not doc.xpath("//field[@name='amount_residual']"):
for placeholder in doc.xpath(
"//field[@name='amount_currency']"):
elem = etree.Element(
'field', {
'name': 'amount_residual',
'readonly': 'True'
})
orm.setup_modifiers(elem)
placeholder.addnext(elem)
# Remove credit and debit data - which is irrelevant in this case
for elem in doc.xpath("//field[@name='debit']"):
doc.remove(elem)
for elem in doc.xpath("//field[@name='credit']"):
doc.remove(elem)
result['arch'] = etree.tostring(doc)
return result
О модификаторах
Модификаторы предназначены для замены attrs
и других атрибутов (readonly
, required
, invisible
),На данный момент они существуют вместе с этими атрибутами.Причиной их введения является упрощение работы нового веб-клиента, чтобы он мог смотреть только в одном месте.Также оценка modifiers
произойдет на стороне сервера, что избавит от необходимости использования интерпретатора, похожего на Python.Наконец, модификаторы конкретного синтаксиса будут: json (информация взята из https://answers.launchpad.net/openobject-server/+question/168924).
Заключение
В итоге, отвечая на ваш вопрос, что вы видитев Редактировать представление формы - это чистый XML-код представления, то же самое вы увидите в XML-файлах модулей Odoo, тогда как Представление полей get - это тот код после загрузки ипреобразован для отображения на стороне клиента.