我收到Odoo 10错误。
我需要将one2many值发送到另一个具有相同one2many字段的模型。
当我使用工作流发送one2many字段时,出现此错误,预期是单例(1,4,6)。
我该如何解决这个问题?
file_upload_material = fields.One2many('file.decision','param_two')
@api.multi
def confirm(self):
file = self.file_upload_material.file
name = self.file_upload_material.name
if self.name:
media_and_media = {
'name': self.name,
'instructions': self.instructions,
'task_id': self.task_id.id,
'descriptions': self.descriptions,
'date_from_exec': self.date_from_exec,
'date_to_exec': self.date_to_exec,
'date_from': self.date_from,
'task_name': self.task_name,
'file_upload_material': [(0, 0, {
'name': name,
'file': file
})],
}
self.env['my.task.log'].create(media_and_media)
self.state = 'unread'
class LogMydecision(models.Model):
_name = "my.task.log"
file_upload_material = fields.One2many('file.decision','param_one')
class FileUpload(models.Model):
_name = 'file.decision'
name = fields.Char('File Name')
file = fields.Binary('Upload File')
param_one = fields.Many2one('my.task.log)
param_two = fields.Many2one('task.log)
答案 0 :(得分:0)
您的错误似乎与包含记录集的字段file_upload_material的值有关,您正在使用它,就好像仅包含一条记录(如m2o)一样,特别是在以下行上:
file = self.file_upload_material.file
name = self.file_upload_material.name
您的问题可以这样解决:
media_and_media = {
'name': self.name,
'instructions': self.instructions,
'task_id': self.task_id.id,
'descriptions': self.descriptions,
'date_from_exec': self.date_from_exec,
'date_to_exec': self.date_to_exec,
'date_from': self.date_from,
'task_name': self.task_name,
'file_upload_material': [(0, 0, {
'name': fum.name,
'file': fum.file
}) for fum in self.file_upload_material],
}
似乎您正在复制文件的值。通过在Confirm方法中进行复制来复制决策记录,您可以将字段更改为m2m并重新使用它,也可以使用(4, id)或(6,0,[ids])而不是使用(0,0,{vals}),就像这样:
media_and_media = {
'name': self.name,
'instructions': self.instructions,
'task_id': self.task_id.id,
'descriptions': self.descriptions,
'date_from_exec': self.date_from_exec,
'date_to_exec': self.date_to_exec,
'date_from': self.date_from,
'task_name': self.task_name,
'file_upload_material': [(6, 0, self.file_upload_material.ids)],
}
防止记录重复。另外,我建议您将file_upload_material
关系的字段切换为m2m