WhatsApp

  
Cómo crear la estructura básica de carpetas para un módulo en Odoo (Docker + Ubuntu)
Aprende cómo organizar tu carpeta de trabajo y da el primer paso para crear tu propio módulo en Odoo.

Si ya tienes Odoo instalado mediante Docker en Ubuntu, es probable que estés listo para comenzar a desarrollar tus propios módulos personalizados. Si aún no lo has hecho o tienes dudas al respecto, puedes consultar nuestro tutorial aquí

Una de las primeras cosas que necesitas es entender cómo estructurar tu módulo correctamente para que sea reconocido por Odoo. 

En este artículo te mostraremos paso a paso cómo crear la estructura mínima necesaria para que tu módulo funcione sin errores.


¿Qué deberías tener en este momento?

Asumiendo que seguiste buenas prácticas y centralizaste todo en una carpeta de proyecto (como odoo-docker), la estructura de carpetas que deberías llevar hasta ahora es la siguiente:


1. Creación del directorio addons

Para poder crear módulos nuevos en Odoo, es necesario contar con una carpeta especial que contenga la estructura de los módulos personalizados. Por convención, esta carpeta se llama addons/ y debe ser creada manualmente dentro del directorio principal de tu proyecto (odoo-docker). Dentro de esa carpeta se crean los directorios para los módulos personalizados que quieras realizar, quedando de la siguiente manera:


En este ejemplo hicimos un directorio de un módulo llamada mi_modulo_personalizado. A continuación veremos la estructura básica para un módulo.


2. Estructura básica de un módulo Odoo

Para que Odoo logre cargar un módulo correctamente, este espera una estructura de archivos específica mínima, la cual se ve así:


2.1 __init__.py (archivo raíz)

Este archivo inicializa el módulo como paquete Python. Aquí se importan los submódulos como models, controllers, etc., para que Odoo los cargue. En este ejemplo, como tenemos el submódulo models, debemos llamarlo en el __init__.py principal para que funcione correctamente. 


En caso de no colocar el submódulo aquí, no funcionará, ya que no se está llamado. 

 

2.2 __manifest__.py 

Este es el archivo de manifiesto del módulo, el cual define la información principal del módulo, como: nombre, versión, descripción, dependencias (depends), archivos XML a cargar, si es instalable o no, entre otros.

Ejemplo básico:

'name': 'Mi Módulo Personalizado',
'version': '1.0',
'depends': ['base'],
'data': ['views/vista.xml'],
'installable': True,
'application': True


2.3 Carpeta models/ y su contenido

La carpeta models/ contiene los archivos Python que definen la estructura y comportamiento de los datos de tu módulo. Aquí es donde defines:

  • Nuevas tablas o modelos (models.Model)

  • Campos (fields.Char, fields.Integer, etc.)

  • Métodos (acciones personalizadas, restricciones, cálculos, etc.)

  • Relaciones entre modelos (One2many, Many2one...)

En pocas palabras, todo lo que hace funcionar tu módulo a nivel de lógica y base de datos vive en models/.
                    __init__.py​                           

Dentro de esta carpeta, agregaremos su propio archivo de inicialización __init__.py, el cual se encargará de importar los archivos .py que se encuentren dentro de la carpeta models/, permitiendo que Odoo los reconozca y cargue correctamente al iniciar el módulo.

En este ejemplo, tenemos un archivo llamado modelo.py, por lo tanto el __init__.py de models deberá contener lo siguiente: 

from . import modelo

modelo.py

El archivo modelo.py contiene la definición de un modelo en Odoo. En este ejemplo, se crea una clase con un único campo de texto que servirá para almacenar el nombre de un registro.

from odoo import models, fields
class Ejemplo(models.Model):
    _name = 'ejemplo.modelo'
    _description = 'Ejemplo de modelo'
    name = fields.Char(string="Nombre")

En este caso, el archivo modelo.py define un modelo personalizado en Odoo llamado mi.modelo, que representa una tabla en la base de datos con dos campos: nombre (de tipo texto) y edad (de tipo entero).


2.4 Carpeta views/ y su contenido

La carpeta views/ contiene los archivos XML que definen la forma en la que se muestran los datos de tu módulo en la interfaz de Odoo. Aquí es donde defines:

  • Formularios para crear o editar registros (<form>)

  • Vistas en forma de lista (<tree>)

  • Búsquedas (<search>) y filtros

  • Acciones que abren vistas (ir.actions.act_window)

  • Menús y submenús de navegación (<menuitem>)

En pocas palabras, todo lo que ve y usa el usuario para interactuar con los datos de tu modelo vive en views/.
vista.xml

Este archivo XML define la interfaz visual del modelo ejemplo.modelo en Odoo. Incluye todo lo necesario para que el usuario pueda interactuar con los datos desde la interfaz web.

<odoo>
    <record id="view_form_ejemplo" model="ir.ui.view">
        <field name="name">ejemplo.form</field>
        <field name="model">ejemplo.modelo</field>
        <field name="arch" type="xml">
            <form string="Ejemplo">
                <group>
                    <field name="name"/>
                </group>
            </form>
        </field>
    </record>
    <record id="action_ejemplo" model="ir.actions.act_window">
        <field name="name">Ejemplo</field>
        <field name="res_model">ejemplo.modelo</field>
        <field name="view_mode">form</field>
    </record>
    <menuitem id="menu_ejemplo_root" name="Ejemplo"/>
    <menuitem id="menu_ejemplo_sub" name="Modelos" parent="menu_ejemplo_root" action="action_ejemplo"/>
</odoo>


  • Vista tipo formulario (<form>):
    Crea un formulario con un campo llamado name, donde el usuario podrá escribir un nombre.

  • Acción (ir.actions.act_window):
    Define una acción que abre el formulario del modelo cuando se hace clic en el menú correspondiente.

  • Menús (<menuitem>):
    Crea una entrada principal en el menú llamada "Ejemplo" y una subopción llamada "Modelos", que al hacer clic abrirá la vista del modelo ejemplo.modelo.


3. Activa tu módulo

Una vez teniendo todos los archivos esenciales para un módulo, ya podemos activarlo. Para ello: 

  • Reinicia tu contenedor de Odoo.
docker restart odoo_app
  • Ve al backend de Odoo > Apps. 
  • Haz clic en el ícono de Actualizar Apps List (puede que necesites activar el modo desarrollador). 
  • Busca tu módulo y haz clic en Instalar

Crear un módulo personalizado en Odoo no es complicado una vez que comprendes la estructura básica de archivos. Si trabajas con Docker y Ubuntu, es importante asegurarte de montar bien los volúmenes y configurar correctamente las rutas de los addons.

¡Y listo! Ahora puedes comenzar a desarrollar funcionalidades personalizadas que se adapten a tu negocio.

En Asimov desarrollamos módulos personalizados para Odoo que se ajustan exactamente a tu flujo de trabajo. ¡Contáctanos y empieza a optimizar tu gestión hoy mismo!

en Odoo
# Odoo

Cómo crear la estructura básica de carpetas para un módulo en Odoo (Docker + Ubuntu)
Nicol Espitia 27 julio, 2025
Compartir
Categorías

Compartir


Iniciar sesión dejar un comentario

  
La Importancia de Incluir un CRM en una Empresa