Как отобразить древовидное представление другой модели, когда я нажимаю кнопку в res.partner с Odoo v11?

У меня есть кнопка в представлении формы, которая наследует base.view_partner_form. Когда я нажимаю кнопку, я хочу показать древовидную структуру другой модели. Я пробовал, но получаю сообщение об ошибке External ID not found появляется ошибка. Как я могу это исправить? Вот мой код:

Просмотр формы:

<record id="similar_list_view_partner_form" model="ir.ui.view">
    <field name="name">similar_list_view_partner_form</field>
    <field name="model">res.partner</field>
    <field name="inherit_id" ref="base.view_partner_form"></field>
    <field name="arch" type="xml">
        <xpath expr="//button[@name='toggle_active'][not(ancestor::field)]" position="after">
            <button class="oe_stat_button" name="similar_list_button_action" type="object" icon="fa-align-justify"> 
                <field name="show" readonly="1"/>
            </button>
        </xpath>
    </field>
</record>

Просмотр в виде дерева:

<record id="similar_detail_tree_view" model="ir.ui.view">
    <field name="name">Similar Detail Tree View</field>
    <field name="model">similar.task</field>
    <field name="arch" type="xml">
        <tree>
            <field name="similar_name"/>
            <field name="similar_email"/>
            <field name="similar_phone"/>
        </tree>
    </field>
</record>

Файл Python, код кнопки:

class similar_contact(models.Model):
    _inherit = 'res.partner'

    show = fields.Char(
        string='Similar'
    )

    @api.multi
    def similar_list_button_action(self):
        tree_view_id = self.env.ref('similar_task.similar_detail_tree_view').id
        return {
            'name':'Similar Detail Tree View',
            'type':'ir.actions.act_window',
            'res_model':'similar.task',
            'view_mode':'tree',
            'views':[(view_tree_id,'tree')],
            'res_id':False,
            'target':'new'
        }

Файл Python, новая модель:

class similar_detail(models.Model):
    _name="similar.task"

    similar_name = fields.Char("Name")

    similar_email = fields.Char("Email")

    similar_phone = fields.Char("Phone")

person ZueZue    schedule 31.03.2018    source источник


Ответы (1)


Попробуй это:

@api.multi
def similar_list_button_action(self):
    tree_view_id = self.env.ref('similar_task.similar_detail_tree_view').id       
    return {
        'name': _('Similar Detail Tree View'),
        'type': 'ir.actions.act_window',
        'res_model': 'similar.task',
        'view_type':'form',
        'view_mode': 'tree',
        'view_id': tree_view_id,
        'res_id': False,
        'context': False,
        'target':'new'
    }

Примечание. Учтите, что ваш пользовательский модуль должен называться similar_task

person ChesuCR    schedule 31.03.2018
comment
Я изменил Similar_list_button_action, как вы говорите. Но он по-прежнему не работает. Ошибка внешнего идентификатора не найдена. Можете ли вы мне снова помочь? - person ZueZue; 01.04.2018
comment
Как называется ваш модуль? Убедитесь, что вы добавляете XML-файл, в котором объявляется представление в __manifest__.py файле. - person ChesuCR; 02.04.2018
comment
@ api.multi def similar_list_button_action (self, context = None): self.ensure_one () tree_view_id = self.env.ref ('similar_contact.similar_detail_tree_view'). id return {'name' :( 'Подобное представление дерева деталей'), 'view_type': 'form', 'view_mode': 'tree', 'views': [(tree_view_id, 'tree')], 'res_model': 'similar.task', 'type': 'ir.actions.act_window ',' res_id ': False,' target ':' current ',} - person ZueZue; 04.04.2018