首页 > 解决方案 > 如何在 Odoo 13 中使用 many2one 为字段创建记录?

问题描述

我有 3 个模型。我使用了 One2many 字段,将模型 3 的树视图放入模型 1 和 2 的表单视图中。

1/ bao_hiem.py 带有 one2many 字段:

  lstd_baohiem = fields.One2many('lich.su', 'name')
  thamchieu = fields.Char('Tham chiếu')

2/ 带有 one2many 字段的 dieu_chinh.py:

  lstd_dieuchinh = fields.One2many('lich.su', 'name')
  thamchieu = fields.Char('Tham chiếu')

和 3/ lich_su.py 与 many2one 字段:

   name = fields.Many2one('bao.hiem')
   name_id = fields.Many2one('bao.hiem')
   thamchieu = fields.Char('Tham chiếu')

我想将 dieu_chinh.py 中的值(例如:'name'、'thamchieu')传递给 lich_su.py 并通过按钮自动记录所有这些值。这样,在模型 1 和模型 2 的用户表单视图中也可以显示记录的值,称为 1 个用户的活动历史记录。按钮的代码如下:

        def chapthuan(self):
          giatri_lstd = self.env['lich.su']
           gt = {
             'name' : self.name.id,
             'thamchieu' : self.thamchieu,
             'thoigian' : self.thoigian
               }
        list_lstd_dieuchinh=[]
        for line in self.lstd_dieuchinh :
            art = {}
            art['name'] = line.name.id
            art['lstd_dieuchinh'] = line.lstd_dieuchinh
            art['thamchieu'] = line.thamchieu
            art['thoigian'] = line.thoigian
            list_lstd_dieuchinh.append((0, 0, art))
            
        gt.update({ # add the list of command to gt
            'thamchieu': list_lstd_dieuchinh
                })
        giatri_lstd = giatri_lstd.create(gt)
        return True 

单击“chapthuan”按钮后,它可以传递值并使用字段“name”,“date”创建记录。但是对于这个领域:'thamchieu' 与 model2 有很多关系的'thamchieu' 仍然没有工作。

在此处输入图像描述

我必须在用户的表单视图中手动选择。

那么如何创建带有 many2one 字段的记录呢?

请帮忙!

谢谢

标签: odooodoo-13one2many

解决方案


https://www.odoo.com/documentation/13.0/reference/orm.html#create-update

您正在尝试通过 x2many 字段的方式通过 (0, 0, {values}) 到 name_id 创建记录。

但是 name_id 是 Many2one 字段。那是你的编程错误。

但是当您尝试删除已经链接到另一条记录的记录时,您显示的错误日志发生了。所以我上面说的不是主要问题......无论如何,我对你的代码有点困惑,它看起来不太好


推荐阅读