Python 如何在odoo中修改模型,以便放弃修改?

Python 如何在odoo中修改模型,以便放弃修改?,python,python-3.x,odoo,undo,odoo-11,Python,Python 3.x,Odoo,Undo,Odoo 11,通常,在Odoo中编辑模型时,可以单击“放弃”按钮恢复所有更改 现在我有一个按钮,可以对模型执行一些修改,例如,它清除一个字段。遗憾的是,单击“放弃”时,此更改不会恢复。因此,我假设我在代码中对模型所做的更改是直接持久化的。如何修改模型,使更改不会在单击“保存”之前直接持久化 在其他框架中,经常修改模型的工作副本,可以简单地将其丢弃或应用于实际模型。Odoo中的丢弃机制是如何工作的 示例 在我看来,我有一个按钮: <header> <button string="Cle

通常,在Odoo中编辑模型时,可以单击“放弃”按钮恢复所有更改

现在我有一个按钮,可以对模型执行一些修改,例如,它清除一个字段。遗憾的是,单击“放弃”时,此更改不会恢复。因此,我假设我在代码中对模型所做的更改是直接持久化的。如何修改模型,使更改不会在单击“保存”之前直接持久化

在其他框架中,经常修改模型的工作副本,可以简单地将其丢弃或应用于实际模型。Odoo中的丢弃机制是如何工作的

示例

在我看来,我有一个按钮:

<header>
    <button string="Clear Filter" type="object" name="clear_filter"/>
</header>

这是可行的,但是对字段的修改是直接持久化的,不能丢弃。

您的用例是什么?您可以使用
onchange
,但可能有更好的方法,具体取决于您的用例。在Odoo中的按钮调用将调用create或write。这两个电话都会把一切都保存到数据库中。我想我不得不接受这个。我的用例是在单击按钮时修改一些记录(例如,将记录添加到多个,如上图所示清除过滤器)。但这些操作无法撤消,这与正常的用户期望背道而驰
def clear_filter(self):
    for record in self:
        record.filter = None