服务器操作的 运行 python 代码错误
Error on running python code with server action
我正在使用 odoo 开发一个应用程序,其中包括将大量数据导入数据库。
过程很简单,我创建了一个仅包含 char 变量的对象,这样它们就可以等于所有内容,然后我从 excel 模板中读取每一行,为每一行创建该对象的新记录。
现在我想在加载所有 excel 行时 运行 服务器操作,这样我就可以处理每个数据,分配变量并使用我创建的另一个对象为每个列选择变量类型。
问题是使用服务器操作你可以 运行 在 excel 文件加载后的一段代码 object.import_pricelist()
但是对象,谁应该是我模型的参考它是NoneType 并且没有方法 import_pricelist
服务器操作定义
<record id="action_python_import" model="ir.actions.server">
<field name="name">Import PriceList</field>
<field name="model_id" ref="model_product_raw"/>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="state">code</field>
<field name="code">object.import_pricelist()</field>
</record>
模型和方法定义
class ProductRaw(models.Model):
_name="product.raw"
name = fields.Char("Product Name")
price = fields.Char("Product Price")
vendor_code = fields.Char("Vendor Code")
product_code = fields.Char("Product Code")
flag_processed = fields.Boolean("Processed",default=False)
flag_error = fields.Boolean("Error",default=False)
error_desc = fields.Char("Error Description")
@api.multi
def import_pricelist(self):
self
应该是对您的模型的引用,对象是对 active_id
的引用,如果在上下文中提供的话。
如果您尝试 运行 一个未连接到模型的任何特定对象的方法(如果我理解正确,您想要创建对象),那么您应该使用 @api.model
装饰器而不是 @api.multi
,和自己而不是 object
,像这样:
<field name="code">self.import_pricelist()</field>
如果我帮到你了,请告诉我。
我正在使用 odoo 开发一个应用程序,其中包括将大量数据导入数据库。
过程很简单,我创建了一个仅包含 char 变量的对象,这样它们就可以等于所有内容,然后我从 excel 模板中读取每一行,为每一行创建该对象的新记录。
现在我想在加载所有 excel 行时 运行 服务器操作,这样我就可以处理每个数据,分配变量并使用我创建的另一个对象为每个列选择变量类型。
问题是使用服务器操作你可以 运行 在 excel 文件加载后的一段代码 object.import_pricelist()
但是对象,谁应该是我模型的参考它是NoneType 并且没有方法 import_pricelist
服务器操作定义
<record id="action_python_import" model="ir.actions.server">
<field name="name">Import PriceList</field>
<field name="model_id" ref="model_product_raw"/>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="state">code</field>
<field name="code">object.import_pricelist()</field>
</record>
模型和方法定义
class ProductRaw(models.Model):
_name="product.raw"
name = fields.Char("Product Name")
price = fields.Char("Product Price")
vendor_code = fields.Char("Vendor Code")
product_code = fields.Char("Product Code")
flag_processed = fields.Boolean("Processed",default=False)
flag_error = fields.Boolean("Error",default=False)
error_desc = fields.Char("Error Description")
@api.multi
def import_pricelist(self):
self
应该是对您的模型的引用,对象是对 active_id
的引用,如果在上下文中提供的话。
如果您尝试 运行 一个未连接到模型的任何特定对象的方法(如果我理解正确,您想要创建对象),那么您应该使用 @api.model
装饰器而不是 @api.multi
,和自己而不是 object
,像这样:
<field name="code">self.import_pricelist()</field>
如果我帮到你了,请告诉我。