如何将域应用于按钮?

时间:2017-08-08 10:38:25

标签: python xml openerp odoo-10

我想从按钮传递默认域以应用于目标操作 像这样:

   var currentPosition : CGFloat!

override func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
    currentPosition = tableView.contentOffset.y
}


override func scrollViewDidScroll(_ scrollView: UIScrollView) {

    let amoutOfScroll = abs(tableView.contentOffset.y - currentPosition) // abs return absulote value, just to avoid getting nagative values

    let scrollLenght = 25 // the length of scroling I need

    if amoutOfScroll > scrollLenght { 

        // code

    }
}

我现在正在做的方法是触发一个打开新动作窗口的功能:

<!-- action -->
<act_window id="action_target"
            name="Project Categories"
            res_model="addon.model"
            view_mode="kanban,tree,form"/>

<!-- button -->
<button class="btn btn-primary"
        type="action"
        name="%(action_target)d"
        domain="[('field_x', '=', self.id)]">
  Do Something
</button>

我执行此操作时出现的不需要的行为是,不会像操作按钮那样保留前一个窗口的路径:

enter image description here

我希望它像:

enter image description here

如何实现?

2 个答案:

答案 0 :(得分:1)

我不太确定你想要做什么,但我们走了:

如果您想打开另一个显示所有记录的视图,其中field_x = self.id

在操作的上下文中使用node_modules。这应该使用搜索集打开您的视图,查找'search_default_field_x': self.id等于field_x的每条记录。您可能需要定义一个能够在self.id上搜索的搜索视图才能使其正常工作(field_x如果不在视图中,则不会填充字段。)

我认为这回答了你的标题和问题的第一部分中的问题。

如果您不想破坏面包屑:

基于odoo 10.0 documentation

  

窗口操作(ir.actions.act_window)

     

target(可选)是否应在主要内容中打开视图   区域(当前),全屏模式(全屏)或对话框/弹出窗口   (新)。使用 main而不是current来清除面包屑。默认   当前。

所以,尝试使用default而不是current,它应该做你想做的事情。至少,它适用于我为公司编写的一些代码,但这适用于odoo 8.因为这是默认设置,所以这就是它在你的第一个片段中工作的原因。

答案 1 :(得分:1)

你应该尝试一下。

<record id="action_target" model="ir.actions.act_window">
    <field name="name">Project Categories</field>
    <field name="res_model">addon.model</field>
    <field name="view_mode">kanban,tree,form</field>
    <field name="context">{
        'search_default_field_x': [active_id],
        'default_field_x': active_id,
        }
    </field>
</record>
  

您可以使用上下文操作设置默认搜索值。更多   细节参考项目模块和项目模块参考“任务”   按钮。你想在这里做同样的事情。