为什么我在 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)
我继承了一些模型。我还需要重写它的写入方法。
我试过这个:
@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)