使用服务器操作运行python代码时出错

时间:2017-08-21 15:58:03

标签: python openerp action odoo-9

我正在使用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):

1 个答案:

答案 0 :(得分:1)

self应该是对模型的引用,object是对active_id的引用,如果在上下文中提供的话。 如果您尝试运行未连接到模型的任何特定对象的方法(如果我理解正确,则要创建对象),而不是使用@api.model装饰器而不是@api.multi,和自我而不是object,像这样:

    <field name="code">self.import_pricelist()</field>

如果我帮忙,请告诉我。