如何解决为什么我在 Odoo 中的 write() 方法没有设置值?
我继承了一些模型。我还需要覆盖它的 write 方法。
我已经试过了:
@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
其中 closure_date 是日期时间字段。
当我将 state_id 更改为 ID 为 7 或 8 的状态时,closure_date 仍然为空。但我知道代码正在通过 if 语句,因为我可以在 vals
的打印中看到 closure_date我第一次遇到 write 方法的问题。为什么会发生,我如何获得解决方案?
解决方法
您在调用 closing_date
后将 super
添加到值字典中,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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。