如何更改创建函数中选择字段的值?
How can I change the value of a selection field on create function?
我想在单击“保存”后更改 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
当时,调用方法 create
时,您的实例并未创建。所以 self
没有任何实例。 self.status = 'ok'
将改变 status of nothing 的值。
您可以像这样设置 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)
错误出现在您的选择字段声明中。应该是这样的:
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)
默认情况下,每个字段的只读都是假的,所以不需要在选择字段中指定它。
如果这解决了您的难题,请通知我。
谢谢
Status 是一个相关字段,因此在创建后更改 many2one 字段的状态。
@api.model
def create(self, values):
rec = super(YouClassName, self).create(values)
# here change the status.
rec.name.status = 'ok'
return rec
我想在单击“保存”后更改 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
当时,调用方法 create
时,您的实例并未创建。所以 self
没有任何实例。 self.status = 'ok'
将改变 status of nothing 的值。
您可以像这样设置 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)
错误出现在您的选择字段声明中。应该是这样的:
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)
默认情况下,每个字段的只读都是假的,所以不需要在选择字段中指定它。
如果这解决了您的难题,请通知我。 谢谢
Status 是一个相关字段,因此在创建后更改 many2one 字段的状态。
@api.model
def create(self, values):
rec = super(YouClassName, self).create(values)
# here change the status.
rec.name.status = 'ok'
return rec