生成One2many字段数据时出现Odoo错误

时间:2015-07-16 13:37:22

标签: python odoo odoo-8 openerp-8

给出标题的以下类:

class vontatas_head(models.Model):
    _name = 'vontatas.head'

    display_name = fields.Char(string="Sor", compute='_compute_display_name', store=False)
    plan_type_id = fields.Many2one(
        comodel_name='plan.type', string='Terv típus', required=True)
    year = fields.Integer(string='Év', required=True, default=lambda *a: strftime('%Y'))
    version = fields.Integer(string='Verzió', required=True, default=1)
    comment = fields.Char(string='Megjegyzés')
    vontatas_data_ids = fields.One2many(
        comodel_name='vontatas.data', inverse_name='vontatas_id', string='Adatok', default=get_default_lines)

详细信息:

class vontatas_data(models.Model):
    _name = 'vontatas.data'

    vontatas_id = fields.Many2one(comodel_name="vontatas.head",  string="Vontatás sor")
    name = fields.Char(string="Megnevezés", required=True)
    code = fields.Char(string="Kód", required=True)
    type = fields.Selection([('total', 'Összesen'), ('input', 'Input')], string="Típus", default='input')
    value = fields.Float(string="Várható költség")
    parent_id = fields.Many2one(comodel_name="vontatas.data",  ondelete='cascade', string="Összesen sor")
    child_ids = fields.One2many(comodel_name="vontatas.data", inverse_name='parent_id', string='Input sorok')

我必须使用以下代码从模板自动生成详细信息数据:

def get_default_lines(self):
    self.env.cr.execute("select name, code, type, parent_id from vontatas order by code")
    sorok = self.env.cr.fetchall()
    ids = []
    for sor in sorok:
        ids.append((0,0, { 'name': sor[0],
                           'code': sor[1],
                           'type': sor[2],
                           'parent_id': sor[3]
                           }))

    return ids

Everyting工作正常,但在创建时我收到一条错误消息:“您尝试访问的其中一个文档已被删除,请在刷新后再试一次。”

我知道为什么会发生这种错误:在生成时,没有有效的parent_id。

我的问题是:如何在函数get_default_lines中提供任何有效的parent_id,知道数据实际上只是在内存中,还没有存储在数据库中? 或者另有要求:如何保持模板中定义的层次结构级别?

0 个答案:

没有答案