2017-08-21 1 views
1

J'utilise odoo pour développer une application qui inclut l'importation massive de données dans une base de données. La procédure c'est simple J'ai créé un objet avec des variables char seulement pour qu'elles puissent être égales à tout, puis je lis chaque ligne d'un template excel pour chaque ligne qu'un nouvel enregistrement pour cet objet est créé. Maintenant, je veux lancer une action serveur lorsque toutes les lignes Excel sont chargées, de cette façon je peux traiter toutes les données, assigner des variables et choisir un type de variable pour chaque colonne avec un autre objet que j'ai créé. Le problème utilise les actions du serveur, vous pouvez exécuter un morceau de code après le fichier Excel est chargé avec cette ligne object.import_pricelist() mais objet, qui est censé être une référence pour mon modèle, il est un NoneType et n'a pas de méthode import_pricelistErreur lors de l'exécution du code python avec l'action du serveur

serveur 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> 

Modèle et méthode 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): 

Répondre

1

self devrait être une référence à votre modèle, objet est une référence à active_id, si elle est fournie dans le contexte. Si vous essayez d'exécuter une méthode qui n'est pas connectée à un objet particulier du modèle (vous voulez créer des objets si je vous comprends bien), vous devez utiliser @api.model decorator au lieu de @api.multi, et self au lieu de object, comme ceci:

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

S'il vous plaît laissez-moi savoir si j'ai aidé.