docs: Agregar mejores prácticas para desarrollo de vistas y depuración de errores comunes
This commit is contained in:
parent
bac05b4bb2
commit
169fc55368
50
CLAUDE.md
50
CLAUDE.md
|
@ -301,4 +301,52 @@ Cuando crees modelos que se relacionan entre sí en el mismo issue:
|
|||
- [ ] ¿Los modelos referenciados en relaciones ya existen?
|
||||
- [ ] ¿Las acciones/vistas referenciadas se cargan ANTES?
|
||||
- [ ] ¿Los grupos en ir.model.access.csv coinciden con los de security.xml?
|
||||
- [ ] ¿Usaste `id` en lugar de `active_id` en contextos de formulario?
|
||||
- [ ] ¿Usaste `id` en lugar de `active_id` en contextos de formulario?
|
||||
- [ ] ¿Verificaste que todos los campos en las vistas existen en los modelos?
|
||||
- [ ] ¿Los nombres de métodos/acciones coinciden exactamente con los definidos en Python?
|
||||
- [ ] ¿Los widgets utilizados son válidos en Odoo 18?
|
||||
|
||||
### Desarrollo de vistas - Mejores prácticas
|
||||
|
||||
#### Antes de crear vistas:
|
||||
1. **Verificar campos del modelo**: SIEMPRE revisar qué campos existen con `grep "fields\." models/archivo.py`
|
||||
2. **Verificar métodos disponibles**: Buscar métodos con `grep "def action_" models/archivo.py`
|
||||
3. **Verificar campos relacionados**: Confirmar que los campos related tienen la ruta correcta
|
||||
|
||||
#### Orden de creación de vistas:
|
||||
1. **Primero**: Definir todas las acciones (ir.actions.act_window) en un solo lugar
|
||||
2. **Segundo**: Crear las vistas (form, list, search, etc.)
|
||||
3. **Tercero**: Crear los menús que referencian las acciones
|
||||
4. **Cuarto**: Si hay referencias cruzadas entre archivos, considerar consolidar en un solo archivo
|
||||
|
||||
#### Widgets válidos en Odoo 18:
|
||||
- Numéricos: `float`, `integer`, `monetary` (NO `float_time` para datos generales)
|
||||
- Texto: `text`, `char`, `html` (NO `text_emojis`)
|
||||
- Booleanos: `boolean`, `boolean_toggle`, `boolean_button`
|
||||
- Selección: `selection`, `radio`, `selection_badge`
|
||||
- Relaciones: `many2one`, `many2many_tags`
|
||||
- Estado: `statusbar`, `badge`, `progressbar`
|
||||
|
||||
#### Errores comunes y soluciones:
|
||||
|
||||
##### Error: "External ID not found"
|
||||
- **Causa**: Referencia a un ID que aún no fue cargado
|
||||
- **Solución**: Reorganizar orden en __manifest__.py o mover definición al mismo archivo
|
||||
|
||||
##### Error: "Field 'X' does not exist"
|
||||
- **Causa**: Vista referencia campo inexistente en el modelo
|
||||
- **Solución**: Verificar modelo y agregar campo o corregir nombre en vista
|
||||
|
||||
##### Error: "action_X is not a valid action"
|
||||
- **Causa**: Nombre de método incorrecto en botón
|
||||
- **Solución**: Verificar nombre exacto del método en el modelo Python
|
||||
|
||||
##### Error: "Invalid widget"
|
||||
- **Causa**: Uso de widget no existente o deprecated
|
||||
- **Solución**: Usar widgets estándar de Odoo 18
|
||||
|
||||
#### Estrategia de depuración:
|
||||
1. Leer el error completo en los logs
|
||||
2. Identificar archivo y línea exacta del problema
|
||||
3. Verificar que el elemento referenciado existe y está accesible
|
||||
4. Si es necesario, simplificar la vista temporalmente para aislar el problema
|
Loading…
Reference in New Issue
Block a user