La couche ORM (Object-Relational Mapping) d'Odoo évite d'écrire des requêtes SQL. Les objets métiers qui accèdent à la base de données héitent de la classe Model 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)
Odoo 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 :
from openerp import models, fields, api class Cours(models.Model): _name = 'openacademy.cours' name = fields.Char(string="Titre", required=True) description = fields.Text()
Si un module de données de démonstration 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 être 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>
Attention au copier-coller pour les caractères accentués.
Mettez à jour le module et visualisez sous PostgreSQL la création de la table openacademy_cours qui contient :
Si la table table openacademy_cours n'est pas créée :
$ sudo service odoo restart