为什么我在 Odoo 中的 write() 方法没有设置值?

Why is my write() method in Odoo not setting the value?

我继承了一些模型。我还需要重写它的写入方法。

我试过这个:

@api.multi
 def write(self, vals, context=None):
     res = super(WebSiteSupportTicket, self).write(vals)
     date = datetime.datetime.now()
     if vals['state_id']:
         if vals['state_id'] == 7 or vals['state_id'] == 8:
             vals['closing_date'] = date
     print(vals)
     return res

其中 closing_date 是日期时间字段。

当我将state_id更改为id为7或8的状态时,closing_date仍然是空的。但我知道代码正在通过 if 语句传递,因为我可以在 vals

的打印中看到 closing_date

我第一次 运行 遇到 write 方法的问题。为什么会发生这种情况,我怎样才能得到解决方案?

你在调用super后将closing_date添加到值字典中,closing_date将不会被写入。

从函数定义中删除 context 参数(不需要)。您可以找到一个示例,其中他们覆盖帐户模块中的发票 write 方法。

示例:

@api.multi
def write(self, values):
    # Define the closing_date in values before calling super
     if 'state_id' in values and values['state_id'] in (7, 8) :
         values['closing_date'] = datetime.datetime.now()
    return super(WebSiteSupportTicket, self).write(values)