La couche ORM (Object-Relational Mapping) d'OpenERP évite d'écrire des requêtes SQL. Les objets métiers qui accèdent à la base de données héritent de la classe osv qui intègre les mécanismes de persistance des objets.
Les informations à fournir sont :
Exemples :
'name' : fields.char()
La méthode char() pourra accepter des paramètres qui précisent les caractéristiques du champ (voir ci-après)
'dateachat' : fields.date()
On peut préciser les caractéristiques des champs :
Exemple :
'name' : fields.char(string=“Titre”, required=True)
OpenERP crée des champs réservés qui ne peuvent être modifiés par l'utilisateur. Ils peuvent être lus si nécessaire pour des traitements.
Odoo exige l'existence d'un champ name pour tous les modèles à des fins d'affichage et de recherches.
A faire :
# -*- coding: utf-8 -*- from osv import osv, fields class cours(osv.Model): _name = 'openacademy.cours' _columns = { 'name': fields.char(string='Titre', required=True), 'description': fields.text(string='Description'), }
Si un module de données a été défini, il est automatiquement chargé.
Un module de données est déclaré dans un fichier au format XML avec des éléments <record>. Chaque élément <record> crée ou met à jour un enregistrement de la base de données.
<openerp> <data> <record model="{model name}" id="{record identifier}"> <field name="{a field name}">{a value}</field> </record> </data> <openerp>
Les fichiers de données Data doivent être déclarés dans le fichier manifest __openerp__.py :
Exercices : définir des donnés de démonstration pour quelques cours :
<openerp> <data> <record model="openacademy.cours" id="cours0"> <field name="name">Français</field> <field name="description">Activités sur la rédaction des mémoires Activités sur les grands classiques de la science-fiction (Stars Wars, etc.) et bien d'autres choses encore ... Plusieurs lignes peuvent ête utilisées </field> </record> <record model="openacademy.cours" id="cours1"> <field name="name">Mathématiques</field> <!-- pas de description pour ce cours --> </record> <record model="openacademy.cours" id="cours2"> <field name="name">Anglais</field> <field name="description">Préparation TOEIC</field> </record> </data> </openerp>
Mettez à jour le module.
En cas d'erreur, il peut être nécessaire de relancer le service openerp :
# service openerp restart