Odoo Development Guide

Odoo Overview → Development

Module structure

my_module/
├── __manifest__.py
├── models/
│   ├── __init__.py
│   └── my_model.py
├── views/
│   └── my_view.xml
├── security/
│   ├── ir.model.access.csv
│   └── security.xml
├── data/
│   └── demo.xml
└── static/
    └── src/
        ├── xml/
        ├── js/
        └── scss/

manifest.py template

{
    'name': 'My Module',
    'version': '19.0.1.0.0',
    'category': 'Sales',
    'summary': 'Short description',
    'description': '''Long description''',
    'depends': ['base', 'sale'],
    'data': [
        'security/ir.model.access.csv',
        'views/my_view.xml',
    ],
    'installable': True,
    'application': False,
}

Odoo 19 pitfalls

  • sale.group_sale_managersales_team trong v19
  • mrp.production không có sale_line_id → dùng origin
  • BOM form view: mrp.mrp_bom_line_view_form
  • Many2one column: dùng field_name KHÔNG field_name_id
  • models/ trước views/ trong data[]
  • Dùng @api.constrains thay _sql_constraints
  • ir.model.access.csv đặt SAU views/ trong data[]
  • Cần dependency mail cho chatter

Best practices