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

Odoo 如何更改创建函数上选择字段的值?,odoo,odoo-10,Odoo,Odoo 10,单击“保存”后,我想更改状态的值状态是一个选择字段[('ok','ok'),('tobe','Not ok')] status=字段。选择( readonly=False, default='tobe', 相关='name.status' ) @api.model def创建(自身、值): self.status='ok' line=super(MyClass,self).创建(值) 回程线 在调用方法create时,不会创建实例。因此,self没有任何实例self.status='ok'将更

单击“保存”后,我想更改
状态的值<代码>状态
是一个选择字段<代码>[('ok','ok'),('tobe','Not ok')]

status=字段。选择(
readonly=False,
default='tobe',
相关='name.status'
)
@api.model
def创建(自身、值):
self.status='ok'
line=super(MyClass,self).创建(值)
回程线

在调用方法
create
时,不会创建实例。因此,
self
没有任何实例
self.status='ok'
将更改nothing的status值

您可以在
values
中设置如下值:

@api.model
def创建(自身、值):
值['status']='ok'
line=super(MyClass,self).创建(值)
回程线
或在创建实例后更改值:

@api.model
def创建(自身、值):
line=super(MyClass,self).创建(值)
line.status='确定'
回程线

但是只有在创建新实例时才会调用方法
create
。在这种情况下,有人想要保存实例。然后必须重写方法
write

@api.multi
def写入(自身、VAL):
VAL[“状态”]=“正常”
ret=super(框架协议,self).write(VAL)

错误在您的选择字段声明中。应该是这样的:

status=fields.Selection([('ok','ok'),('notok','notok'),],default='tobe')
@api.multi
def写入(自身、VAL):
VAL[“状态”]=“正常”
ret=super(此处为您的类名self)。write(VAL)
默认情况下,每个字段上的readonly为false,因此无需在选择字段中指定它

如果这能解决您的挑战,请通知我。
感谢

状态是一个相关字段,因此在创建之后,请更改多个字段的状态

@api.model
def创建(自身、值):
rec=super(YouClassName,self)。创建(值)
#在这里更改状态。
rec.name.status='确定'
返回记录

与你写的完全一样。我尝试在createyes之后更改值。我尝试line.status='ok',我尝试使用值['status']='ok'否更改否errorOk。请告诉我。你对“点击保存”有什么意见。您之前做了什么?单击“保存”是第一次创建记录,因此它是“创建函数状态=字段”。选择(readonly=False,default='tobe',related='name.status')名称是One2manyfield@SOS-蒙娜:这是正确的答案。选择字段需要一个定义字段选择内容的
Selection
参数。它默认为
None
,因此无法设置任何有意义的值。请看下面的图片。“除相关字段或字段扩展名外,属性选择是必需的。”