У меня есть мастер с полем m2m, который отображает library.book tree.
В представлении родительского модуля:
<field name='model'>library.return.wizard</field>
<field name='arch' type='xml'>
<form string="Return books">
<sheet>
<group>
<field name='book_ids'>
<tree>
<field name="name"/>
<field name="state"/>
<!--How to add date_return field here?-->
<!--<field name="date_return"/>-->
</tree>
</field>
</group>
</sheet>
</form>
</field>
Другая модель модуля наследует library.book и добавляет поле date_return .
class LibraryBook(models.Model):
_inherit = 'library.book'
date_return = fields.Date('Date to return')
Я попытался добавить поле date_return в окно мастера, как это, в вид дочернего модуля:
<field name='model'>library.return.wizard</field>
<field name='arch' type='xml'>
<field name='book_ids' position="inside">
<tree>
<xpath expr="field[@name='state']" position="after">
<field name="date_return" />
</xpath>
</tree>
</field>
</field>
Это не работает. Как правильно указать его в представлении?
Опять же, у меня есть модуль, который наследует модель поля m2m, и добавляю туда поле, но я не могу его получить.
ОБНОВЛЕНИЕ 22 июня:
inherit_id
определенно помогло. Родительская запись - <record id='library_return_wizard_form' model='ir.ui.view'>
, поэтому мое дочернее представление использует <field name="inherit_id" ref="my_library.library_return_wizard_form"/>
.
Когда я использую только локатор элементов, единственный столбец, отображаемый в виджете-дереве, - state
.
<record id='library_return_wizard_form_add' model='ir.ui.view'>
<field name='name'>library.return.wizard.form.view.add</field>
<field name='model'>library.return.wizard</field>
<field name="inherit_id" ref="my_library.library_return_wizard_form"/>
<field name='arch' type='xml'>
<field name='book_ids' position="inside">
<tree>
<field name="state" position="after">
<field name="date_return"/>
</field>
</tree>
</field>
</field>
</record>
Если я попытаюсь выполнить go с помощью xpath, появится ошибка интерфейса js.
<record id='library_return_wizard_form_add' model='ir.ui.view'>
<field name='name'>library.return.wizard.form.view.add</field>
<field name='model'>library.return.wizard</field>
<field name="inherit_id" ref="my_library.library_return_wizard_form"/>
<field name='arch' type='xml'>
<field name='book_ids' position="inside">
<tree>
<xpath expr="//field[@name='book_ids']/tree/field[@name='state']" position="after">
<field name="date_return" />
</xpath>
</tree>
</field>
</field>
</record>
Может быть, просто может быть, поле не найдено с этим xpath, но я сомневаюсь в этом.
Полная ошибка:
TypeError: Cannot read property 'type' of undefined
at Class._renderBodyCell (http://localhost:8069/web/static/src/js/views/list/list_renderer.js:317:55)
at http://localhost:8069/web/static/src/js/views/list/list_renderer.js:593:25
at Function._.map._.collect (http://localhost:8069/web/static/lib/underscore/underscore.js:164:24)
at Class._renderRow [as _super] (http://localhost:8069/web/static/src/js/views/list/list_renderer.js:592:24)
at Class._renderRow (http://localhost:8069/web/static/src/js/views/list/list_editable_renderer.js:566:32)
at Class._renderRow (http://localhost:8069/web/static/src/js/core/class.js:123:38)
at Function._.map._.collect (http://localhost:8069/web/static/lib/underscore/underscore.js:164:24)
at Class._renderRows (http://localhost:8069/web/static/src/js/views/list/list_renderer.js:614:18)
at Class._renderRows (http://localhost:8069/web/static/src/js/views/list/list_editable_renderer.js:588:26)
at Class._renderRows (http://localhost:8069/web/static/src/js/core/class.js:123:38)
В list_renderer. js xpath файла node
имеет все его атрибуты, кроме expr
undefined.
ОКОНЧАТЕЛЬНОЕ РЕДАКТИРОВАНИЕ:
Мне следовало удалить также эти несколько элементов, которые я не заметил после того, как слишком долго смотрел на этот файл. Локатор или xpath
надо было поместить прямо в arch
.
<field name='book_ids' position="inside">
<tree>