为什么我得到这个错误?:预计单:spray.action(1,2)

我有一个形式的按钮,单击时应该更新从spray.action模型数据当前模型mrl。然后,我做进一步的处理,但它引发错误为什么我得到这个错误?:预计单:spray.action(1,2)

ValueError("Expected singleton: %s" % self) ValueError: Expected singleton: spray.action(1, 2) 

@api.multi 

def mrlCreateSprayRecords(self):

spray_ids = []

vals = []

spray_obj = self.env['spray.action'].search([])

print("spray_obj \n\n\n\t %s ", spray_obj)

for obj in spray_obj:

print("Spray Action Objects \n\n %s \n\t ", obj)

vals = {

'ref': obj.ref,

'farm': obj.farm.farm,

'block': obj.block.block,

'valves': obj.valves.valve,

}

print("Spray Action Data Browse , \n\n\t %s ", vals)

res = super(Mrl, self).create(vals)

res.update(vals)

print("object in mrlCreateSprayRecords \n\n\t %s", res)

return {

'name': 'Update Mrl Operations',

'type': 'ir.actions.act_window',

'view_type': 'form',

'view_mode': 'form',

'res_model': 'mrl',

'views': [(spray_obj.id, 'form')],

'view_id': spray_obj.id,

# 'target': 'new',

'res_id': self.id,

'context': self.env.context,

}

回答:

我想你'view_id': spray_obj.id,必须有写视图id的行中得到的错误。 spray_obj记录集有很多记录,所以你不能像那样使用它(spray_obj.id)。您也可以删除view_id参数以便使用默认视图。

@api.multi 

def mrlCreateSprayRecords(self):

self.ensure_one()

spray_obj = self.env['spray.action'].search([]) # recordset of all records of the model????

for obj in spray_obj:

vals = {

'ref': obj.ref,

'farm': obj.farm.farm,

'block': obj.block.block,

'valves': obj.valves.valve,

}

self.create(vals)

view_id = self.env.ref('module.xml_view_id').id

return {

'name': 'Update Mrl Operations',

'type': 'ir.actions.act_window',

'view_type': 'form',

'view_mode': 'form',

'res_model': 'mrl',

'view_id': view_id,

'res_id': self.id,

'context': self.env.context,

}

我已经加入self.ensure_one(),因为res_id必须只有一个ID为好。

我删除res.update(vals)线,因为它没有任何意义,我哈哈

更多的事情

而是打印的,你应该使用记录器:

import logging 

_logger = logging.getLogger(__name__)

_logger.info('Hello')

相反,行res = super(Mrl, self).create(vals)我认为你应该使用这一个

res = self.create(vals)  # if you are in the mrl model 

回答:

总之,当您访问包含多条记录的recordSet的字段direclty时,会出现此类错误。

您对搜索returnd 2记录spray.action执行搜索(1, 2)

所以,当你做spray_obj.id odoo会感到困惑什么ID,他应该返回1或2,而这里odoo抛出这个错误。

所以不要访问一个字段的搜索结果,或x2many fiels他们可能有多个记录里面。

@ChesuCR有所改善你的代码并纠正它

以上是 为什么我得到这个错误?:预计单:spray.action(1,2) 的全部内容, 来源链接: utcz.com/qa/258038.html

回到顶部