project.project: campos, relaciones y API
El modelo project.project («Proyecto») es un modelo persistente declarado por el módulo Proyecto y ampliado por 12 módulos más. Expone 143 campos, 100 de ellos declarados directamente en el modelo; 30 campos de otros modelos apuntan a él. A continuación encontrará cada campo con su nombre técnico, tipo, etiqueta en español y relaciones, y un ejemplo de llamada a la API JSON-2 de Odoo 20.
Ficha de identidad
- Nombre técnico
project.project- Etiqueta
- Proyecto
- Tipo
- Persistente (models.Model)
- Tabla SQL
project_project- Módulo de origen
- Proyecto (
project) - Ampliado por
- project_account, sale_project, crm_sale_project, hr_timesheet, project_hr_expense, project_mrp, project_stock, project_purchase, project_sms, sale_project_margin, sale_project_stock, sale_timesheet
- Orden por defecto (_order)
sequence, name, id
Campos del modelo
100 campos propios, 37 heredados de mixins y 6 campos automáticos del ORM. Haga clic en un nombre para obtener el enlace directo al campo.
143 de 143 campos mostrados
| Nombre técnico | Etiqueta | Tipo | Detalles |
|---|---|---|---|
| access_instruction_message | Access Instruction Message | char | calculado |
| account_id | Cuenta | many2one | |
| active | Activo | boolean | |
| alias_id | Alias Correo electrónico interno asociado con este proyecto. Los mensajes entrantes se sincronizan automáticamente con las Tareas (u opcionalmente con las incidencias si el módulo de seguimiento de incidencias está instalado). | many2one | |
| allocated_hours | Tiempo asignado | float | añadido por Registros de tareas ( |
| allow_billable | Facturable | boolean | añadido por Sales - Project ( |
| allow_milestones | Hitos | boolean | |
| allow_recurring_tasks | Tareas recurrentes | boolean | |
| allow_task_dependencies | Dependencias de tareas | boolean | |
| allow_timesheets | Partes de horas | boolean | calculado, almacenado añadido por Registros de tareas ( |
| allowed_internal_user_ids | Miembros del equipo | many2many | calculado, almacenado |
| analytic_account_active | Active Account | boolean | related: añadido por Registros de tareas ( |
| analytic_account_balance | Analytic Account Balance | monetary | related: |
| billing_type | Tipo de facturación | selection | obligatoriocalculado, almacenado Valores: añadido por Sales Timesheet ( |
| bom_count | Bom Count | integer | calculado añadido por MRP Project ( |
| can_mark_milestone_as_done | Can Mark Milestone As Done | boolean | calculado |
| closed_task_count | Closed Task Count | integer | calculado |
| collaborator_count | # Collaborators | integer | calculado |
| collaborator_ids | Colaboradores | one2many | inverso: |
| color | Índice de Colores | integer | |
| company_id | Compañía | many2one | calculado, almacenado |
| currency_id | Moneda | many2one | solo lecturacalculado |
| date | Fecha de expiración Fecha en la que termina este proyecto. Se toma en cuenta el calendario definido en el proyecto a la hora de ver su planificación. | date | |
| date_last_stage_update | Última actualización de la etapa | datetime | |
| date_start | Fecha de inicio | date | |
| description | Descripción Texto de descripción para proporcionar más información y contexto sobre este proyecto | html | |
| display_sales_stat_buttons | Display Sales Stat Buttons | boolean | calculado añadido por Sales - Project ( |
| duration_tracking | Duration Tracking | json | |
| effective_hours | Tiempo dedicado | float | calculado añadido por Registros de tareas ( |
| encode_uom_in_days | Encode Uom In Days | boolean | calculado añadido por Registros de tareas ( |
| estimated_cost | Estimated Cost | monetary | calculado añadido por Sales Margins in Projects ( |
| estimated_cost_ratio | Estimated Cost Ratio | float | calculado añadido por Sales Margins in Projects ( |
| favorite_user_ids | Miembros | many2many | |
| google_map_iframe | Google Map Iframe | html | calculado |
| has_any_so_to_invoice | Has SO to Invoice | boolean | calculado añadido por Sales - Project ( |
| has_any_so_with_nothing_to_invoice | Has a SO with an invoice status of No | boolean | calculado añadido por Sales - Project ( |
| invoice_count | Número de facturas | integer | calculado añadido por Sales - Project ( |
| is_favorite | Show Project on Dashboard | boolean | calculado |
| is_internal_project | Is Internal Project | boolean | calculado añadido por Registros de tareas ( |
| is_milestone_deadline_exceeded | Is Milestone Deadline Exceeded | boolean | calculado |
| is_milestone_exceeded | Is Milestone Exceeded | boolean | calculado |
| is_project_overtime | Project in Overtime | boolean | calculado añadido por Registros de tareas ( |
| is_rotting | Is Rotting | boolean | |
| is_template | Es una plantilla | boolean | |
| label_tasks | Usar tareas como Nombre utilizado para referirse a las tareas de su proyecto, por ejemplo, tareas, tickets, sprints, etc. | char | traducible |
| last_update_color | Last Update Color | integer | calculado |
| last_update_id | Última actualización | many2one | |
| last_update_status | Last Update Status | selection | obligatoriocalculado, almacenado Valores: |
| lead_id | Lead | many2one→ crm.lead | añadido por CRM - Project ( |
| milestone_count | Milestone Count | integer | calculado |
| milestone_count_reached | Milestone Count Reached | integer | calculado |
| milestone_ids | Hito | one2many | inverso: |
| milestone_progress | Milestones Reached | integer | calculado |
| name | Nombre | char | obligatoriotraducible |
| next_milestone_id | Next Milestone | many2one | calculado |
| next_milestone_status | Next Milestone Status | char | calculado |
| open_task_count | Open Task Count | integer | calculado |
| partner_email | Partner Email | char | related: |
| partner_id | Cliente | many2one | calculado, almacenado |
| partner_phone | Partner Phone | char | related: |
| pricing_type | Precio La tarifa por tarea es perfecta si desea factura con diferentes servicios a diferentes clientes con diferentes tarifas. La tarifa fija es perfecta si factura un servicio a una tarifa fija por hora o día empleado, independientemente del empleado que lo haya realizado. La tarifa por empleado es preferible si sus empleados prestan el mismo servicio a una tarifa diferente. Por ejemplo, los consultores junior y senior prestarían el mismo servicio (= consultoría), pero a una tarifa diferente debido a su nivel de experiencia. | selection | calculado Valores: añadido por Sales Timesheet ( |
| privacy_visibility | Visibilidad Project and task visibility Control who can access this project: • Internal users: choose whether access is limited to team members or available to everyone in your organization. • Portal users: choose whether invited collaborators can access the project. Access levels for portal users • View: can access tasks and send messages. • Edit: can create and update tasks. • Advanced Edit: create and update tasks, change their priority, and move them between stages. Other rules • Internal users can open a task from a direct link, even if they don't have access to the project application. • Project admins have access to private projects, even if they are not team members. | selection | obligatorio Valores: |
| production_count | Production Count | integer | calculado añadido por MRP Project ( |
| purchase_orders_count | # Purchase Orders | integer | calculado añadido por Project Purchase ( |
| real_cost | Coste real | monetary | calculado añadido por Sales - Project ( |
| real_cost_ratio | Real Cost Ratio | float | calculado añadido por Sales - Project ( |
| reinvoiced_sale_order_id | Pedido de venta Los productos añadidos a las preparaciones de stock (con el tipo de operación configurado para generar costes analíticos) serán refacturados en este pedido de venta si están configurados para ello. | many2one | añadido por Sales - Project ( |
| remaining_hours | Tiempo restante | float | calculado añadido por Registros de tareas ( |
| resource_calendar_id | Horario de trabajo | many2one | calculado |
| rotting_days | Rotting Days | integer | |
| sale_line_employee_ids | Sale line/Employee map Sales order item that will be selected by default on the timesheets of the corresponding employee. It bypasses the sales order item defined on the project and the task, and can be modified on each timesheet entry if necessary. In other words, it defines the rate at which an employee's time is billed based on their expertise, skills or experience, for instance. If you would like to bill the same service at a different rate, you need to create two separate sales order items as each sales order item can only have a single unit price at a time. You can also define the hourly company cost of your employees for their timesheets on this project specifically. It will bypass the timesheet cost set on the employee. | one2many | inverso: añadido por Sales Timesheet ( |
| sale_line_id | Elemento del pedido de venta Sales order item that will be selected by default on the tasks and timesheets of this project, except if the employee set on the timesheets is explicitely linked to another sales order item on the project. It can be modified on each task and timesheet entry individually if necessary. | many2one | calculado, almacenado añadido por Sales - Project ( |
| sale_order_amount_total | Sale Order Amount Total | monetary | calculado añadido por Sales - Project ( |
| sale_order_count | Número de pedidos de venta | integer | calculado añadido por Sales - Project ( |
| sale_order_id | Pedido de venta | many2one | related: añadido por Sales - Project ( |
| sale_order_line_count | Sale Order Line Count | integer | calculado añadido por Sales - Project ( |
| sale_order_state | Sale Order State | selection | related: añadido por Sales - Project ( |
| sale_warning_text | Project Warning Warning for the partner as set by the user. | text | calculado añadido por Sales - Project ( |
| sequence | Secuencia | integer | |
| show_ratings | Show Ratings | boolean | calculado |
| stage_id | Etapa | many2one | |
| stat_extra_time_value | Stat Extra Time Value | char | calculado añadido por Registros de tareas ( |
| stat_success_rate | Stat Success Rate | float | calculado añadido por Registros de tareas ( |
| stat_timesheet_value | Stat Timesheet Value | char | calculado añadido por Registros de tareas ( |
| tag_ids | Etiquetas | many2many | |
| task_completion_percentage | Task Completion Percentage | float | calculado |
| task_count | Task Count | integer | calculado |
| task_ids | Tareas | one2many | inverso: |
| task_properties_definition | Propiedades de la tarea | properties_definition | |
| tasks | Actividades de las tareas | one2many | inverso: |
| timesheet_encode_uom_id | Timesheet Encode Uom | many2one→ uom.uom | calculado añadido por Registros de tareas ( |
| timesheet_ids | Associated Timesheets | one2many | inverso: añadido por Registros de tareas ( |
| timesheet_product_id | Producto de los partes de horas Servicio que se utilizará por defecto al facturar el tiempo dedicado a una tarea. Se puede modificar individualmente en cada tarea al seleccionar un elemento específico en el pedido de venta. | many2one | calculado, almacenado añadido por Sales Timesheet ( |
| total_timesheet_time | Total amount of time (in the proper unit) recorded in the project, rounded to the unit. | float | calculado añadido por Registros de tareas ( |
| type_ids | Etapas de tareas | many2many | |
| update_count | Update Count | integer | calculado |
| update_ids | Actualizar | one2many | inverso: |
| user_id | Gestor de proyectos | many2one | |
| vendor_bill_count | Número de facturas de proveedor | integer | related: añadido por Sales - Project ( |
| warning_employee_rate | Warning Employee Rate | boolean | calculado añadido por Sales Timesheet ( |
| access_token | Token de seguridad | char | heredado de portal.mixin |
| access_url | URL de acceso al portal URL del portal de cliente | char | calculado heredado de portal.mixin |
| access_warning | Advertencia de acceso | text | calculado heredado de portal.mixin |
| activity_calendar_event_id | Siguiente evento en el calendario de actividades. | many2one | calculado heredado de mail.activity.mixin |
| activity_date_deadline | Fecha límite de la siguiente actividad | date | solo lecturacalculado heredado de mail.activity.mixin |
| activity_exception_decoration | Decoración de Actividad de Excepción Tipo de actividad de excepción en el registro. | selection | calculado Valores: heredado de mail.activity.mixin |
| activity_exception_icon | Icono Icono para indicar una actividad de excepción. | char | calculado heredado de mail.activity.mixin |
| activity_ids | Actividades | one2many | inverso: heredado de mail.activity.mixin |
| activity_plans_ids | Planes de actividades | many2many | calculado heredado de mail.activity.mixin |
| activity_state | Estado de la actividad Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities. | selection | calculado Valores: heredado de mail.activity.mixin |
| activity_summary | Resumen de la siguiente actividad | char | related: heredado de mail.activity.mixin |
| activity_type_icon | Icono de tipo de actividad | char | related: heredado de mail.activity.mixin |
| activity_type_id | Tipo de la siguiente actividad | many2one | related: heredado de mail.activity.mixin |
| activity_user_id | Usuario responsable | many2one | solo lecturacalculado heredado de mail.activity.mixin |
| alias_defaults | Alias Defaults | text | heredado de mail.alias.mixin |
| alias_domain | Nombre del dominio de alias | char | related: heredado de mail.alias.mixin.optional |
| alias_domain_id | Dominio de alias | many2one | related: heredado de mail.alias.mixin.optional |
| alias_email | Alias de correo electrónico | char | calculado heredado de mail.alias.mixin.optional |
| alias_name | Nombre del alias | char | heredado de mail.alias.mixin |
| auto_account_id | Cuenta analítica | many2one | calculado heredado de analytic.plan.fields.mixin |
| has_message | Tiene un mensaje | boolean | calculado heredado de mail.thread |
| message_attachment_count | Número de archivos adjuntos | integer | calculado heredado de mail.thread |
| message_follower_ids | Seguidores | one2many | inverso: heredado de mail.thread |
| message_has_error | Error de envío de mensaje Si está marcada, algunos mensajes tienen error de envío. | boolean | calculado heredado de mail.thread |
| message_has_error_counter | Número de errores Número de mensajes con error de envío | integer | calculado heredado de mail.thread |
| message_has_sms_error | Error de envío del SMS Si está marcada, algunos mensajes tienen error de envío. | boolean | calculado heredado de mail.thread |
| message_ids | Mensajes | one2many | inverso: heredado de mail.thread |
| message_is_follower | Es un seguidor | boolean | calculado heredado de mail.thread |
| message_needaction | Acción requerida Si está marcada, hay nuevos mensajes que requieren su atención. | boolean | calculado heredado de mail.thread |
| message_needaction_counter | Número de acciones Número de mensajes que requieren una acción | integer | calculado heredado de mail.thread |
| message_partner_ids | Seguidores (Contactos) | many2many | calculado heredado de mail.thread |
| my_activity_date_deadline | Fecha límite de mi actividad | date | solo lecturacalculado heredado de mail.activity.mixin |
| rating_avg | Calificación promedio | float | calculado heredado de rating.parent.mixin |
| rating_avg_percentage | Calificación promedio (%) | float | calculado heredado de rating.parent.mixin |
| rating_count | N.° de calificaciones | integer | calculado heredado de rating.parent.mixin |
| rating_ids | Calificaciones | one2many | inverso: heredado de rating.parent.mixin |
| rating_percentage_satisfaction | Satisfacción de calificación Porcentaje de calificaciones positivas | integer | calculado heredado de rating.parent.mixin |
| create_date | Creado el | datetime | solo lecturaautomático |
| create_uid | Creado por | many2one | solo lecturaautomático |
| display_name | Nombre mostrado | char | solo lecturacalculadoautomático |
| id | ID | integer | solo lecturaautomático |
| write_date | Última actualización el | datetime | solo lecturaautomático |
| write_uid | Última actualización por | many2one | solo lecturaautomático |
Relaciones
Modelos enlazados desde este modelo
- account.analytic.account: account_id
- account.analytic.line: timesheet_ids
- crm.lead: lead_id
- mail.alias: alias_id
- product.product: timesheet_product_id
- project.collaborator: collaborator_ids
- project.milestone: milestone_ids, next_milestone_id
- project.project.stage: stage_id
- project.sale.line.employee.map: sale_line_employee_ids
- project.tags: tag_ids
- project.task: task_ids, tasks
- project.task.type: type_ids
- project.update: last_update_id, update_ids
- res.company: company_id
- res.currency: currency_id
- res.partner: partner_id
- res.users: allowed_internal_user_ids, favorite_user_ids, user_id
- resource.calendar: resource_calendar_id
- sale.order: reinvoiced_sale_order_id, sale_order_id
- sale.order.line: sale_line_id
- uom.uom: timesheet_encode_uom_id
Campos de otros modelos que apuntan aquí
- account.analytic.line: project_id
- mrp.bom: project_id
- mrp.production: project_id
- product.template: project_id, project_template_id
- project.collaborator: project_id
- project.milestone: project_id
- project.sale.line.employee.map: project_id
- project.tags: project_ids
- project.task: project_id
- project.task.burndown.chart.report: project_id
- project.task.stage.report: project_id
- project.task.type: project_ids
- project.task.type.delete.wizard: project_ids
- project.template.create.wizard: template_id
- project.update: project_id
- purchase.order: project_id
- purchase.report: project_id
- report.project.task.user: project_id
- res.company: internal_project_id
- res.config.settings: internal_project_id
- res.users: favorite_project_ids, followed_project_ids
- sale.order: project_id, project_ids
- sale.order.line: project_id
- sale.report: project_id
- stock.picking: project_id
- timesheets.analysis.report: project_id
- withdrawal.request: project_id
Leer este modelo por la API
Ejemplo de llamada a la API JSON-2 de Odoo 20: lectura de los cinco primeros registros con campos reales del modelo. Sustituya la instancia, la base y la clave API por las suyas.
curl -X POST "https://su-instancia.odoo.com/json/2/project.project/search_read" \
-H "Authorization: bearer $ODOO_API_KEY" \
-H "X-Odoo-Database: su-base" \
-H "Content-Type: application/json" \
-d '{"domain":[],"fields":["name","billing_type","last_update_status","privacy_visibility","account_id"],"limit":5}'import requests
BASE_URL = "https://su-instancia.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "su-base"}
res = requests.post(
f"{BASE_URL}/project.project/search_read",
headers=headers,
json={"domain": [], "fields": ["name","billing_type","last_update_status","privacy_visibility","account_id"], "limit": 5},
)
res.raise_for_status()
print(res.json())- El acceso a la API externa está reservado al plan Custom de Odoo.
- XML-RPC y JSON-RPC se retirarán en Odoo 22 (otoño de 2028): use JSON-2.
- Se aplican los permisos de acceso y las reglas de registro del usuario de la clave.
Citar esta herramienta
¿Escribe un tutorial, una documentación interna o una respuesta en un foro? Copie este enlace para dirigir a sus lectores a la ficha actualizada.
<a href="https://aidoo.ai/es/outils/explorateur-modeles-odoo/project-project">project.project (Odoo 20.0)</a>Fuentes
- Código fuente del modelo en GitHub
- Documentación de Odoo 20: ORM API
- Documentación de Odoo 20: API externa JSON-2
Datos verificados el 25 de septiembre de 2026 · Odoo 20.0 Community
¿Tiene un proyecto Odoo o quiere aprovechar su ERP con la IA? Hablemos
Implantación, desarrollo de módulos, conexión de Claude o ChatGPT a sus datos: cuéntenos su contexto y le responderemos en 24 horas laborables.