在odoo 9中创建不同的表单和树

时间:2018-05-02 09:02:28

标签: python xml 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"/>。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

主要问题是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参数来执行操作。有关详细信息,请参阅Actions Documentation,但想法是:

<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,则客户端   应获取所请求的指定类型的默认视图   model(由fields_view_get()自动完成)。首先   列表的类型是默认视图类型,默认情况下将打开   执行动作时每种视图类型最多都应该出现   一次在列表中