Odoo 10错误 - 我需要将one2many值发送到另一个模型具有相同的one2many字段

问题描述 投票:0回答:1

我收到一个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)
odoo-10
1个回答
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],
}

您似乎通过复制确认方法复制file.decision记录的值,您可以将字段更改为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)],
}

这可以防止记录重复。此外,我建议你切换到m2m字段为file_upload_material关系

© www.soinside.com 2019 - 2024. All rights reserved.