首页 > 解决方案 > 在 odoo 9 中创建不同的形式和树

问题描述

我正在构建模块odoo。在我的模块中,需要两个表单和树,它们具有来自一个类的不同字段。我已经试过了,但没有用。这是我的代码

<record id="open_view_client_form_view_2_list_my" model="ir.actions.act_window">
        <field name="name">Trial</field>
        <field name="res_model">new.trial</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form</field>
        <field name="domain">[]</field>
        <field name="view_id" ref="client_form_view_2,client_form_view_2_tree"/>
        <field name="context">{ 'form_view_ref' : 'client_form_view_2', 'tree_view_ref':'client_form_view_2_tree'}</field>    
        <field name="search_view_id" ref="client_form_view_2_filter"/>
        <field name="help" type="html">
          <p class="oe_view_nocontent_create">
            Click to add a new project.
          </p>
        </field>
    </record>

和这样的错误<field name="view_id" ref="client_form_view_2,client_form_view_2_tree"/>。我该如何解决这个问题?

标签: pythonxmlodoo-9

解决方案


主要问题是view_id是一个 Many2one 字段,这意味着您只能在ref参数中指定一个视图。您应该为主要视图(首先显示)指定参考。在您的情况下,您view_mode指定tree视图将是主要的。

<field name="view_id" ref="client_form_view_2_tree"/>

"module_name.view_name"尽管从技术上讲,上述内容没有任何问题,但识别 ref 也是最佳实践。

看起来您context的设置已正确处理显示正确的表单视图。所以,我认为你的代码在你更新view_id.


如果这仍然不起作用,那么您可能需要使用views该操作的参数。有关更多详细信息,请参阅操作文档,但想法是这样的:

<field name="views">[(id, name), (id, name)]</field>
<!-- This is just an example. You may have to tweak this to work properly -->
<field name="views">[('your_module.tree_view', 'tree'), ('your_module.form_view', 'form')]</field>

(view_id, view_type) 对的列表。每对的第二个元素是视图的类别(树、表单、图形...),第一个元素是可选的数据库 ID(或 False)。如果没有提供 id,客户端应该为请求的模型获取指定类型的默认视图(这由 fields_view_get() 自动完成)。列表的第一种类型是默认视图类型,在执行操作时默认打开。每种视图类型在列表中最多应出现一次


推荐阅读