odoo many2one和many2many

时间:2019-02-08 13:56:14

标签: python odoo odoo-8 odoo-10

我有一个类型为many2one的字段。同样在我的数据库中,我有很多记录。

现在,我想将此字段的类型从many2many更改为Integrity Error,但是当我创建记录时,它会向我显示bed_id = fields.Many2one('i.bed', 'bed', required=True, ondelete="restrict", track_visibility="onchange")

这是我的领域:

bed_id = fields.Many2many('i.bed', 'bed', required=True,string="beds",  track_visibility="onchange")  

我将其更改为此:

public static void ExecuetAsyncIfPosible(Action workerAction)
{
    ThreadPool.GetAvailableThreads(out int worker, out _);

    if (worker > 0)
        ThreadPool.QueueUserWorkItem((status) => workerAction());

    workerAction();
}

完整性错误为:

  

操作可能无法完成,可能是由于以下原因:   -删除:您可能正在尝试删除一条记录,而其他记录仍引用该记录   -创建/更新:未正确设置必填字段

     

[引用对象:bed_id-bed.id]

如何解决此问题而不删除数据库中的现有记录?

1 个答案:

答案 0 :(得分:2)

我将新的(many2many)字段的名称更改为bed_ids

首先,这是出于Odoo准则的考虑,其次,我认为Odoo不能将字段从many2one迁移到many2many,因为在数据库方面,这是一个完整的其他关系。 many2one字段只是其他表的外键,但many2many字段是通过关联表实现的。

这就是为什么我会让旧的字段存在,以便您可以自己迁移它的原因。迁移后,您应该删除字段或让Odoo通过在代码中删除字段来删除字段。