python - Odoo - 防止按钮关闭向导

标签 python xml python-2.7 odoo-8 odoo

我有一个用作对话的 transient 模型。在我的表单 View 中,我有一个这样的按钮:

<footer states="partnerId">
   <button name="check_tax_id" string="Tovább" type="object"/>
</footer>

按钮调用此函数(我可以确认它确实调用了):

@api.one
    def check_tax_id(self, context=None):
        self.state = "partnerDetails"

        return None;

我的问题是,一旦我点击这个按钮,对话窗口就会立即关闭! 我做错了什么?

最佳答案

解决方案 0

@api.multi
def check_tax_id(self):
    self.ensure_one()
    self.name = "New name"
    return {
        "type": "ir.actions.do_nothing",
    }

此解决方案已提供 here塔德乌什·卡尔平斯基 (Tadeusz Karpinski) 着。

解决方案一

您可以返回具有相同记录 ID 的新表单。

@api.multi
def check_tax_id(self):
    self.ensure_one()
    self.name = "New name"
    return {
        'context': self.env.context,
        'view_type': 'form',
        'view_mode': 'form',
        'res_model': 'model_name',
        'res_id': self.id,
        'view_id': False,
        'type': 'ir.actions.act_window',
        'target': 'new',
    }

方案二

您可以在 jQuery 中创建小部件。这将打开向导,您可以手动将您想要的行为分配给按钮。您也可以使用 call 函数来调用 python 函数:

[...]

new instance.web.Dialog(this, { 
    title: _t("Title"), 
    width: '95%', 
    buttons: [
          { text: _t("First button"), click: function() { self.first_button(); }}, 
          { text: _t("Second button"), click: function() { self.second_button(); }},
          { text: _t("Close"), click: function() {  dialog.close(); }},                       
      ],
});

[...]

方案三

当然你也可以重写create方法,避免某些情况下记录的创建

方案四

最后一个选项。创建带有状态字段的工作流。创建工作流按钮以发送信号以更改状态。您可以使用 attrs 属性和 state 字段显示或隐藏其余字段。但是不知道能不能满足你的需求。

关于python - Odoo - 防止按钮关闭向导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31963214/

相关文章:

python - 按表格格式化列表数据

python - 实现 jsonpickle 自定义处理程序时如何处理单个值?

sql-server - 根据多个 xml 属性过滤 XML 节点以进行更新

xml - 使用输入 xsd 架构验证 XSL 文档选择和匹配属性

python - 通过多级键解析 JSON 值

python - 从字典中的自定义函数访问值

python - 设置 __all__ 然后使用前导下划线是否有意义?

Python PIL - 在裁剪、缩放和保存时将颜色配置文件更改为未标记的 RGB

python - Django Rest Framework 如何返回在所有无效网址上找不到的详细信息?

xml - 解析XML处理指令