我正在使用odoo开发一个应用程序,其中包括向数据库大量输入数据。
简单的过程我创建了一个只有char变量的对象,因此它们可以等于所有内容,然后我从每个行的excel模板中读取每一行,创建该对象的新记录。
现在我想在加载所有excel行时运行服务器操作,这样我就可以处理每个数据,为每个列选择一个变量类型和我创建的另一个对象。
问题是使用服务器操作,您可以在使用此行object.import_pricelist()
加载excel文件后运行一段代码,但是对象应该是我的模型的参考,它是一个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>
模型和方法def
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):
答案 0 :(得分:1)
self
应该是对模型的引用,object是对active_id
的引用,如果在上下文中提供的话。
如果您尝试运行未连接到模型的任何特定对象的方法(如果我理解正确,则要创建对象),而不是使用@api.model
装饰器而不是@api.multi
,和自我而不是object
,像这样:
<field name="code">self.import_pricelist()</field>
如果我帮忙,请告诉我。