如何更改创建函数中选择字段的值?

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