点击“保存”后,我想更改status
的值。 status
是一个选择字段[('ok', 'Ok'),('tobe', 'Not Ok')]
status = fields.Selection(
readonly=False,
default='tobe',
related= 'name.status'
)
@api.model
def create(self, values):
self.status= 'ok'
line = super(MyClass, self).create(values)
return line
答案 0 :(得分:4)
状态是一个相关字段,因此在创建更改后,您的状态为many2one字段。
@api.model
def create(self, values):
rec = super(YouClassName, self).create(values)
# here change the status.
rec.name.status = 'ok'
return rec
答案 1 :(得分:3)
错误在您的选择字段声明中。它应该是这样的:
status = fields.Selection([('ok', "OK"),('not ok', "Not OK"),],default='tobe')
@api.multi
def write(self, vals):
vals['status'] = 'ok'
ret = super(Your-Class-Name-here, self).write(vals)
默认情况下,每个字段的readonly都为false,因此无需在选择字段中指定它。
请通知我,如果这可以解决您的挑战。 感谢
答案 2 :(得分:1)
当时调用方法create
时,您的实例不会被创建。所以self
没有任何实例。 self.status = 'ok'
将改变任何状态的值。
您可以设置values
中的值:
@api.model
def create(self, values):
values['status'] = 'ok'
line = super(MyClass, self).create(values)
return line
或者在创建实例后更改值:
@api.model
def create(self, values):
line = super(MyClass, self).create(values)
line.status = 'ok'
return line
但只有在创建新实例时才调用方法create
。有一种情况,有人想要保存实例。然后,您必须覆盖方法write
:
@api.multi
def write(self, vals):
vals['status'] = 'ok'
ret = super(FrameworkAgreement, self).write(vals)