2017-08-21 71 views
1

我正在使用odoo開發一個應用程序,該應用程序包括向數據庫大量輸入數據。 這個過程很簡單我只用char變量創建了一個對象,所以它們可以等於一切,然後從excel模板中爲每一行讀取每一行,爲此對象創建一條新記錄。 現在我想在加載所有excel行時運行服務器操作,這樣我可以處理每個數據,分配變量併爲每個列使用另一個創建的對象選擇變量類型。 的問題是使用服務器操作Excel文件裝入該行object.import_pricelist()但對象,誰應該是我的模型的引用這是一個NoneType,沒有方法import_pricelist在服務器動作中運行python代碼時出錯

服務器後,您可以運行一段代碼Action Def。

<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

self應該是你的模型的引用,目的是active_id一個參考,如果在上下文提供。 如果您試圖運行未連接到模型的任何特定對象的方法(如果我理解正確的話,您想創建對象),那麼應該使用@api.model裝飾器代替@api.multi,而不是使用object這個:

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

請讓我知道,如果我幫助。