Ora che abbiamo la nostra prima applicazione iniziamo ad aggiungere un semplice modello.
I modelli sono la M del paradigma MVC, rappresento i dati su cui la nostra applicazione lavora. Sono dei modelli i Prodotti, le Fatture, i Clienti, etc.
I modelli sono descritti da classi Python che ereditano da una classe generica del framework Odoo le loro funzionalità base. Il loro compito principale è quello di tradurre il loro schema sulle tabelle del database. Odoo si occuperè poi automaticamente di installare e aggiornare il database in fase di upgrade del modulo.
Il modello che andremo a definire è un semplice Todo Task, ogni task avrà un campo testo per la descrizione e un campo booleano per segnare il task come completato.
Tutti i modelli di un modulo risiedono all’interno di una cartella models all’interno del modulo, e al suo interno aggiungiamo il file task.py e il file __init__.py, necessario per far capire a Python che il contenuto di models è importabile.
Avremo cosi questa struttura:
todo_app/
models/
__init__.py
task.py
__init__.py
__manifest__.py
All’interno del file del modello task_model.py aggiungiamo questo contenuto:
from odoo import models, fields
class TodoTask(models.Model):
_name = 'todo.task'
_description = 'Todo Task'
name = fields.Char('Description', required=True)
is_done = fields.Boolean('Done?')
active = fields.Boolean('Active?', default=True)
A questo punto Odoo non sa ancora dell’esistenza della nostra cartella dei modelli, ne che e' stato definito un file task_models.py. Per rendere la nostra modifica effettiva dobbiamo aggiustare le importazioni dei file negli __init__.py
All’interno del file _todo_app/__init__.py aggiungiamo:
from . import models
All’interno del file _todo_app/models/__init__.py aggiungiamo:
from . import task
A questo punto Odoo sarà in grado di riconoscere e manipolare il modello appena creato.
Ogni volta che effettuiamo una modifica ad un modello, dobbiamo dire manualmente ad odoo di aggiornare (migrare) il database, per farlo abbiamo un comando apposito da passare ad odoo.
Apri una nuova shell e dalla cartella contentente il fiel docker_compose.yml, scrivi:
$ docker compose run odoo upgrade todo_app
Che fra le tante cose che scrive, dovrebbe anche dire:
2018-06-28 09:46:34,017 1 INFO demo odoo.modules.registry: module todo_app: creating or updating database tables
Attualmente non abbiamo ancora definito viste per il nostro modello, quindi non è possibile vedere semplicemente se le modifiche sono state apportate al sistema. Abbiamo un ottima occasione però per vedere un altro strumento di sviluppo che Odoo ci offre. Attiviamo la modalità sviluppatore e andiamo nel modulo:
Settings -> Technical -> Database Structure -> Models
Cerchiamo il modello todo.task e sulla lista clicchiamo sul risultato ottenuto. Se tutto è andato dovremmo vedere una schermata tipo questa:
Che ci conferma che il modello e i campi che abbiamo definito sono stati effettivamente creati. Come si vede, Odoo si occupa automaticamente di aggiungere altri campi, tra cui i più rilevanti sono:
Questi campi vengono aggiunti automaticamente a tutti i modelli che verranno creati.
Adesso che abbiamo un modello di dati su cui lavorare possiamo creare le prime viste che ci permettarann di interagire con il database tramite l’interfaccia web.