如何更新整个odoo产品中某个字段的不同记录?

时间:2019-04-14 13:49:08

标签: python python-3.x postgresql odoo

我想更新计算的字段记录,但是当我使用write方法时,它会在所有字段中写入自记录。

产品,模板中的名称字段未存储。现在由于我们的业务需求,所以我无法搜索它。

我创建另一个存储字段以将名称记录移入其中。所以我可以寻找而不是名字。

我单击按钮以从名称字段更新该字段中的数据。但是当我按下按钮时,它会更新为自己的名字,而不是每个产品的名字。

class autopart(models.Model):
_inherit = 'product.template'

@api.multi
def button_name(self):
    for rec in self:
        name=self.name
        rec.search([]).write({'nameseacrh': self.name})



name = fields.Char(string="Name", required=False ,compute=compute_amount ,search=pro_search)

nameseacrh = fields.Char(string="", required=False,store=True, compute=compute_search )

按钮XML

<button name="button_name" type="object" string="name" class="oe_highlight" groups="base.group_system"/>

1 个答案:

答案 0 :(得分:0)

我不完全了解您要做什么,但是这里已经有几句话:

@api.multi
def button_name(self):
    for rec in self:
        name=self.name  # remark 1
        rec.search([]).write({'nameseacrh': self.name})  # remark 2 and 3

1)您永远不要使用此变量

2)rec.search([])self.env['product.template'].search([])相同:它需要数据库中的所有产品模板。您可能不想这样做...然后将您的值写在所有记录上。

3)您使用self.name而不是rec.name。仅当self是一个元素的记录集时,第一个才会起作用,而在@api.multi

中的大多数情况下,情况并非如此

4)我不明白为什么您需要创建一个新字段来执行以前的操作。您不必这样做。