Reprenons l'exemple créé en v7 que nous allons reproduire en v8 avec les nouvelles API .
Nous ne mettrons en place ni la traduction en français, ni la gestion des droits d'accès.
Le résultat à obtenir sera :
* Ecran "Author" :
* Ecran "Book":
Nous allons créer le module "mylibrary2" avec les fichiers suivants :
__init__.py
import mylibrary2
__openerp__.py
# -*- coding: utf-8 -*-
{
'name': 'mylibrary2',
'version': '0.1',
'category': 'Generic Modules/Others',
'description': """ Test creation module new api Odoo v8
""",
'author': 'PMA',
'depends': ['base'],
'data': ['mylibrary2_view.xml'],
'installable': True,
'auto_install': False,
}
mylibrary2.py
(ce fichier est impacté par les nouvelles api)
# -*- coding: utf-8 -*-
from openerp import models, fields
class author(models.Model):
_name = 'mylibrary.author'
_rec_name = 'lastname'
firstname = fields.Char('FirstName', required=True)
lastname = fields.Char('LastName', required=True)
book_ids = fields.One2many('mylibrary.book','author_id','Books')
class book(models.Model):
_name = 'mylibrary.book'
title = fields.Char('Title', required=True)
genre = fields.Char('Genre', required=True)
author_id = fields.Many2one('mylibrary.author','Author',ondelete='cascade')
mylibrary2_view.xml
<?xml version="1.0" ?>
<openerp>
<data>
<record model="ir.ui.view" id="author_form">
<field name="name">author.form</field>
<field name="model">mylibrary.author</field>
<field name="arch" type="xml">
<form string="Author">
<label string="First Name" />
<field name="firstname"/>
<label string="Last Name" />
<field name="lastname"/>
<notebook colspan="3">
<page string="Books">
<field name="book_ids"/>
</page>
</notebook>
</form>
</field>
</record>
<record model="ir.ui.view" id="author_tree">
<field name="name">author.tree</field>
<field name="model">mylibrary.author</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Author" >
<field name="firstname"/>
<field name="lastname"/>
<field name="book_ids"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_author">
<field name="name">Author</field>
<field name="res_model">mylibrary.author</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<record model="ir.ui.view" id="book_form">
<field name="name">book.form</field>
<field name="model">mylibrary.book</field>
<field name="arch" type="xml">
<form string="Book" >
<label string="Title" />
<field name="title"/>
<label string="Genre" />
<field name="genre"/>
<label string="Author" />
<field name="author_id"/>
</form>
</field>
</record>
<record model="ir.ui.view" id="book_tree">
<field name="name">book.tree</field>
<field name="model">mylibrary.book</field>
<field name="arch" type="xml">
<tree string="Book" >
<field name="title"/>
<field name="genre"/>
<field name="author_id"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_book">
<field name="name">Book</field>
<field name="res_model">mylibrary.book</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="mylibrary" name="Mylibrary"/>
<menuitem name="Mylibrary" id="section_main_menu_mylibrary" parent="mylibrary" />
<menuitem name="Authors" id="choix_author" parent="section_main_menu_mylibrary" action="action_author"/>
<menuitem name="Books" id="choix_book" parent="section_main_menu_mylibrary" action="action_book"/>
</data>
</openerp>
Bonjour,
Je vous remercie pour cet article. En le suivant j'ai réussi à créer un module qui permet d'ajouter des données. Tout marche très bien. Ma question est comment afficher ces données sur mon site web (j'utilise website odoo pour la création de site).
Pouvez vous m'en dire un peu plus d'une part sur ces données et d'autre part, comment les afficher sur le website.
Je ne connais pas encore super bien ce sujet mais je pourrai regarder si j'y vois plus clair sur vos besoins.
Merci pour votre rapide réponse. E fait j'utilise ce module pour créer des catégrories (villes) et des sous catégories (communes). Je veux bien que ces données seront affichés sur le site sous forme d'un annuaire ( tableau : ville -> communes ).
Bonjour débutant sur odoo je voudrais savoir comment rajouter + de champ à la classe Author par exemple? Un champ date ?
Je me permets de vous demander car après plusieurs essaie je rencontre un échec…
Qu'est-ce que : _rec_name = 'lastname' qu'est-ce que cette ligne fait concrètement?
_rec_name sert à préciser quel champ d'une relation many2one, est à afficher.
Par défaut, _rec_name est égal à name
Comment je peux faire si je veux récupérer le nom d'un client par exemple?
client_id = fields.Many2one('res_partner','??')
client_id = fields.Many2one('res.partner','Client')
Tout simplement
Je vous remercie pour cet article , je suis débutante en Odoo , j'ai essayé d'installer ce module mais un erreur s'est produit lors de l'installation du module:
ParseError: "Invalid view definition
Dxe9tails de l'erreur :
Modxe8le non trouvxe9 : mylibrary.author
Bonjour,
J'ai ajouté required=True sur le champ author_id de la table mylibrary.book
Maintenant, je souhaite ajouter un nouveau livre à un auteur.
Je sélectionne un auteur dans la liste des auteurs.
Puis je clique sur Modifier puis sur Ajouter un élément pour ajouter un livre.
Pourquoi dois-je saisir le nom de l'auteur dans le formulaire de création du livre. Y-a-t-il un moyen pour que le champ author_id soit automatiquement garni avec le nom de l'auteur sélectionné au départ ?
Merci bcp
merci infiniment
peut-on afficher plusieurs champs d’une relation many2one avec _recname
comment tu as changé le logo de odoo qui est on top left
C’est l’image que j’ai mise comme logo de société
comment je vais creer le module en utilisant quelle commande svp aidez moi
Vous pouvez regarder cet article pour vous aider :
https://agipme.fr/2013/08/creation-1er-module-sous-openerp-70.html
merci beaucoup.j’ai longtemps trimé pour pouvoir créer mon premier module et là c’est passé sans problème. le tutoriel est bien expliqué. vraiment merci
Merci pour cette article. Svp comment géré les accès utilisateurs d’un module odoo.