如何在单击按钮时使用默认值将字段添加到树形视图?

时间:2018-11-12 13:02:24

标签: odoo odoo-10

我添加了一个打开新向导的按钮,最后一个仅包含一个字段,即number,即number是我要在默认值

的树笔记本树形视图上创建的字段数

例如,如果我输入20,那么我应该在树视图中提交20个条目

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

我假设这是一个one2many字段。通过在定义many2one字段时指定的字段中指定记录ID号,可以将One2many字段链接到模型。

例如:

  
child_ids = fields.One2many('child.model.name', 'parent_id', 'Child Records')

因此,当您使用one2many字段创建新行时,将创建模型“ child.model.name”的新记录,并且parent_id字段设置为当前记录的ID。

因此,要在表单中创建许多空行,您要做的就是创建记录,并将“ parent_id”字段设置为原始记录ID。

首先,您需要将原始记录的ID传递给向导,这将在按钮定义中进行:

<button name="%(wizard_action)d"
    string="Wizard Button"
    type="action"
    context="{'default_source_record_id': active_id}" />

您将在向导中需要一个名为“ source_record_id”的字段,该字段将是与您调用它的模型相同的many2one字段,并且需要在向导视图中具有该字段,但是您可以如果需要,它是不可见的。

在您从向导调用的代码中,您将创建一个循环,以调用“ child.model.name”模型上的create方法来创建该数量的空记录。看起来像这样:

  
iterations = self.nombre

for i in range(iterations):
    self.env['child.model.name'].create({
        'parent_id': self.source_record_id.id
    })

这将创建空记录,它们将显示在您的one2many字段中。

答案 1 :(得分:0)

这是该模型的捕获: enter image description here 查看我的代码:

@api.multi
def creat_fields(self):
    numbers = self.w_qtt
    for values in numbers:
        # self.env['sale.order.line'].create(lignes_vales)
        self.env['sale.order.line'].create({
            'contrat_name_id': self.w_contrat_name,
            'contrat_lignes_id' : self.w_contrat_line,
            'product_id' : self.w_product_name,
            'bons_po' : self.w_po_number,
            'product_uom_qty' : 1,
            'price_unit' : self.w_prix,
        })

并在xml上:

 <footer>
      <button string="Cancel" class="oe_link" special="cancel"/>
      <button 
           name="creat_fields" 
           string="Enregistrer" 
           class="oe_highlight" 
           context="{'default_source_record_id': active_id}"/>
</footer>