Relaciones entre Modelos
En este tutorial se crearán las relaciones entre los modelos Project y Task, se utilizarán campos relacionales de acuerdo a los estándares de modelos de Odoo.
Modelos Relacionados
Section titled “Modelos Relacionados”
-
Crea el campo relacional de la figura para el modelo Project en el archivo
project.py.from odoo import models, fields, api, exceptionsclass Project(models.Model):_name = "project_"_description = "Modelo Project"name = fields.Char(string="Nombre")description = fields.Char(string="Descripción")start_date = fields.Date(string="Fecha de Inicio", default=fields.Date.today)end_date = fields.Date(string="Fecha de Fin")days = fields.Integer(string="Dias", compute="_compute_days")task_ids = fields.One2many(comodel_name="task_", inverse_name="project_id", string="Tareas") -
Crea el campo relacional de la figura para el modelo Task en el archivo
task.py.from odoo import models, fields, api, exceptionsclass Task(models.Model):_name = "task_"_description = "Modelo Task"name = fields.Char(string="Name")state = fields.Selection(string="State",selection=[("1", "Draft"),("2", "Progress"),("3", "Done"),("4", "Canceled"),],)project_id = fields.Many2one(comodel_name="project_", string="Proyecto") -
Actualice la vista del modelo Project en el archivo
project_views.xml<?xml version='1.0' encoding='utf-8'?><odoo><record id="project_list" model="ir.ui.view"><field name="name">project.list</field><field name="model">project_</field><field name="arch" type="xml"><list><field name="name" /><field name="start_date" /><field name="end_date" /><field name="days"/></list></field></record><record id="project_form" model="ir.ui.view"><field name="name">project.form</field><field name="model">project_</field><field name="arch" type="xml"><form><sheet><group><field name="name" /><field name="description" /><field name="start_date" /><field name="end_date" /><field name="task_ids" /></group></sheet></form></field></record><record id="project_action" model="ir.actions.act_window"><field name="name">Proyectos</field><field name="res_model">project_</field><field name="view_mode">list,form</field></record></odoo> -
Actualice la vista del modelo Task en el archivo
task_views.xml<?xml version='1.0' encoding='utf-8'?><odoo><record id="task_list" model="ir.ui.view"><field name="name">task.list</field><field name="model">task_</field><field name="arch" type="xml"><list><field name="name" /><field name="state" /><field name="task_count"/><field name="project_id" /></list></field></record><record id="task_form" model="ir.ui.view"><field name="name">task.form</field><field name="model">task_</field><field name="arch" type="xml"><form><sheet><group><field name="name" /><field name="state" /><field name="project_id" /></group></sheet></form></field></record><record id="task_action" model="ir.actions.act_window"><field name="name">Tareas</field><field name="res_model">task_</field><field name="view_mode">list,form</field></record></odoo> -
Reinicie el servidor de Odoo y actualice el módulo.