Odoo 19.0 Community · Persistente

project.task: campos, relaciones y API

El modelo project.task («Tarea») es un modelo persistente declarado por el módulo Proyecto y ampliado por 8 módulos más. Expone 144 campos, 102 de ellos declarados directamente en el modelo; 18 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 19.

Ficha de identidad

Nombre técnico
project.task
Etiqueta
Tarea
Tipo
Persistente (models.Model)
Tabla SQL
project_task
Módulo de origen
Proyecto (project)
Ampliado por
hr_timesheet, project_hr_skills, sale_project, project_sms, project_timesheet_holidays, project_todo, sale_timesheet, website_project
Orden por defecto (_order)
priority desc, sequence, date_deadline asc, id desc
Hereda de (mixins)
portal.mixinmail.thread.ccmail.activity.mixinrating.mixinmail.tracking.duration.mixinhtml.field.history.mixin

Campos del modelo

102 campos propios, 39 heredados de mixins y 3 campos automáticos del ORM. Haga clic en un nombre para obtener el enlace directo al campo.

144 de 144 campos mostrados

Nombre técnicoEtiquetaTipoDetalles
activeActivoboolean
allocated_hoursTiempo asignadofloat
allow_billableAllow Billableboolean

related: project_id.allow_billable

añadido por Ventas - Proyecto (sale_project)

allow_milestonesAllow Milestonesboolean

related: project_id.allow_milestones

allow_recurring_tasksAllow Recurring Tasksboolean

related: project_id.allow_recurring_tasks

allow_task_dependenciesAllow Task Dependenciesboolean

related: project_id.allow_task_dependencies

allow_timesheetsAllow timesheetsboolean
solo lecturacalculado

añadido por Registros de tareas (hr_timesheet)

analytic_account_activeActive Analytic Accountboolean

related: project_id.analytic_account_active

añadido por Registros de tareas (hr_timesheet)

attachment_idsArchivos adjuntos

Archivos adjuntos que no provienen de mensajes

one2many
calculado
child_idsSubtareasone2many

inverso: parent_id

closed_depend_on_countCerrado según las tareasinteger
calculado
closed_subtask_countClosed Sub-tasks Countinteger
calculado
colorÍndice de Coloresinteger
company_idCompañíamany2one
calculado, almacenado
create_dateCreado eldatetime
solo lectura
current_user_same_company_partnerCurrent User Same Company Partnerboolean
calculado
date_assignFecha de asignación

Fecha en la que se asignó (o se eliminó la asignación) esta tarea por última vez. Gracias a esta información podrá obtener estadísticas sobre cuánto tarda normalmente en asignar tareas.

datetime
solo lectura
date_deadlineFecha límitedatetime
date_endFecha de findatetime
date_last_stage_updateÚltima actualización de la etapa

Date on which the state of your task has last been modified. Based on this information you can identify tasks that are stalling and get statistics on the time it usually takes to move tasks from one stage/state to another.

datetime
solo lectura
depend_on_countDependiendo de las tareasinteger
calculado
depend_on_idsBloqueado pormany2many
dependent_idsBloquearmany2many
dependent_tasks_countTareas dependientesinteger
calculado
descriptionDescripciónhtml
display_follow_buttonDisplay Follow Buttonboolean
calculado
display_in_projectDisplay In Projectboolean
calculado, almacenado
display_nameNombre para mostrar

Use these keywords in the title to set new tasks: 30h Allocate 30 hours to the task #tags Set tags on the task @user Assign the task to a user ! Set the task a medium priority !! Set the task a high priority !!! Set the task a urgent priority Make sure to use the right format and order e.g. Improve the configuration screen 5h #feature #v16 @Mitchell !

char
display_parent_task_buttonDisplay Parent Task Buttonboolean
calculado
display_sale_order_buttonMostrar pedido de ventaboolean
calculado

añadido por Ventas - Proyecto (sale_project)

displayed_image_idImagen de portadamany2one
effective_hoursTiempo dedicadofloat
calculado, almacenado

añadido por Registros de tareas (hr_timesheet)

email_ccEmail Cc

Correos electrónicos que estaban marcados como CC en los correos recibidos de esta tarea y no están vinculados a un cliente existente.

char
email_fromCorreo electrónico dechar
encode_uom_in_daysEncode Uom In Daysboolean
calculado

añadido por Registros de tareas (hr_timesheet)

has_late_and_unreached_milestoneHas Late And Unreached Milestoneboolean
calculado
has_multi_solTiene varias líneas de pedido de ventaboolean
calculado

añadido por Partes de horas en ventas (sale_timesheet)

has_project_templateHas Project Templateboolean

related: project_id.is_template

has_template_ancestorTiene plantilla de origenboolean
calculado, almacenado
is_closedEstado cerradoboolean
calculado
is_project_map_empty¿El mapa del proyecto está vacío?boolean
calculado

añadido por Partes de horas en ventas (sale_timesheet)

is_templateEs una plantillaboolean
is_timeoff_taskIs Time off Taskboolean
calculado

añadido por Partes de horas en ausencias (project_timesheet_holidays)

last_sol_of_customerÚltima línea del pedido de venta del clientemany2one
calculado

añadido por Partes de horas en ventas (sale_timesheet)

leave_types_countNúmero de tipos de ausenciainteger
calculado

añadido por Partes de horas en ausencias (project_timesheet_holidays)

milestone_idHito

Ofrezca sus servicios automáticamente cada vez que se alcance un hito, se puede hacer vinculándolo a un elemento del pedido de venta.

many2one
calculado, almacenado
nameTítulochar
obligatorio
overtimeHoras extraordinariasfloat
calculado, almacenado

añadido por Registros de tareas (hr_timesheet)

parent_idTarea padremany2one
partner_company_nameNombre de la empresachar

related: partner_id.company_name

añadido por Envío de tareas en línea (website_project)

partner_idClientemany2one
calculado, almacenado
partner_nameNombre del clientechar

related: partner_id.name

añadido por Envío de tareas en línea (website_project)

partner_phoneNúmero de contactochar
calculado, almacenado
personal_stage_idEstado de la etapa personal

La etapa personal del usuario actual.

many2one
calculado
personal_stage_type_idEtapa personal

La etapa de la tarea personal del usuario actual.

many2one

related: personal_stage_id.stage_id

personal_stage_type_idsPersonal Stagesmany2many
portal_user_namesPortal User Nameschar
calculado
pricing_typePricing Typeselection

related: project_id.pricing_type

añadido por Partes de horas en ventas (sale_timesheet)

priorityPrioridadselection

Valores: 0 (Prioridad baja), 1 (Prioridad media), 2 (Alta prioridad), 3 (Urgente)

progressProgresofloat
calculado, almacenado

añadido por Registros de tareas (hr_timesheet)

project_idProyectomany2one
calculado, almacenado
project_privacy_visibilityVisibilidad del proyectoselection

related: project_id.privacy_visibility

project_sale_order_idPedido de venta del proyectomany2one

related: project_id.sale_order_id

añadido por Ventas - Proyecto (sale_project)

rating_activeEstado de calificación de la etapaboolean

related: stage_id.rating_active

recurrence_idRecurrenciamany2one
recurring_countTareas en recurrenciainteger
calculado
recurring_taskRecurrenteboolean
remaining_hoursTiempo restante

Número de horas asignadas menos el número de horas dedicadas.

float
solo lecturacalculado, almacenado

añadido por Registros de tareas (hr_timesheet)

remaining_hours_availableHoras restantes disponiblesboolean

related: sale_line_id.remaining_hours_available

añadido por Partes de horas en ventas (sale_timesheet)

remaining_hours_percentageRemaining Hours Percentagefloat
calculado

añadido por Registros de tareas (hr_timesheet)

remaining_hours_soTiempo restante en el pedido de ventafloat
calculado

añadido por Partes de horas en ventas (sale_timesheet)

repeat_intervalRepetir cadainteger
calculado
repeat_typeHastaselection
calculado

Valores: forever (Para siempre), until (Hasta)

repeat_unitUnidad de repeticiónselection
calculado

Valores: day (Días), week (Semanas), month (Meses), year (Años)

repeat_untilFecha de finalizacióndate
calculado
role_idsRoles del proyecto

Cuando creas un proyecto a partir de una plantilla, puedes elegir qué empleado asume cada rol. Estos empleados se añadirán a las tareas, junto con las personas que ya estén asignadas.

many2many
sale_line_idElemento del pedido de venta

Sales Order Item to which the time spent on this task will be added in order to be invoiced to your customer. By default the sales order item set on the project will be selected. In the absence of one, the last prepaid sales order item that has time remaining will be used. Remove the sales order item in order to make this task non billable. You can also change or remove the sales order item of each timesheet entry individually.

many2one
calculado, almacenado

añadido por Ventas - Proyecto (sale_project)

sale_order_idPedido de venta

Pedido de venta al que está vinculado la tarea.

many2one
calculado, almacenado

añadido por Ventas - Proyecto (sale_project)

sale_order_stateSale Order Stateselection

related: sale_order_id.state

añadido por Ventas - Proyecto (sale_project)

sequenceSecuenciainteger
stage_idEtapamany2one
calculado, almacenado
stage_id_colorStage Colorinteger

related: stage_id.color

stateEstadoselection
obligatoriocalculado, almacenado

Valores calculados dinámicamente

subtask_allocated_hoursSub-tasks Allocated Time

Suma de las horas asignadas para todas las subtareas (y sus propias subtareas) vinculadas a esta tarea. Normalmente es menor o igual que las horas asignadas a esta tarea.

float
calculado
subtask_completion_percentageSubtask Completion Percentagefloat
calculado
subtask_countSub-task Countinteger
calculado
subtask_effective_hoursTiempo dedicado a subtareas

Tiempo dedicado a subtareas (y sus subtareas) de esta tarea.

float
calculado, almacenado

añadido por Registros de tareas (hr_timesheet)

tag_idsEtiquetasmany2many
task_propertiesPropiedadesproperties
task_to_invoiceA facturarboolean
calculado

añadido por Ventas - Proyecto (sale_project)

timesheet_idsPartes de horasone2many

inverso: task_id

añadido por Registros de tareas (hr_timesheet)

timesheet_product_idProducto de los partes de horasmany2one

related: project_id.timesheet_product_id

añadido por Partes de horas en ventas (sale_timesheet)

total_hours_spentTiempo total dedicado

Tiempo dedicado a esta tarea y sus subtareas (y sus propias subtareas).

float
calculado, almacenado

añadido por Registros de tareas (hr_timesheet)

user_idsPersonas asignadasmany2many
user_skill_idsUser Skillone2many

related: user_ids.employee_skill_ids

añadido por Proyecto - Habilidades (project_hr_skills)

website_message_idsWebsite Messageone2many
working_days_closeDías laborables para cerrarfloat
calculado, almacenado
working_days_openDías laborables para asignarfloat
calculado, almacenado
working_hours_closeHoras laborables para cerrarfloat
calculado, almacenado
working_hours_openHoras laborables para asignarfloat
calculado, almacenado
write_dateÚltima actualización eldatetime
solo lectura
access_tokenToken de seguridadchar

heredado de portal.mixin

access_urlURL de acceso al portal

URL del portal de cliente

char
calculado

heredado de portal.mixin

access_warningAdvertencia de accesotext
calculado

heredado de portal.mixin

activity_calendar_event_idSiguiente evento en el calendario de actividades.many2one
calculado

heredado de mail.activity.mixin

activity_date_deadlineFecha límite de la siguiente actividaddate
solo lecturacalculado

heredado de mail.activity.mixin

activity_exception_decorationDecoración de Actividad de Excepción

Tipo de actividad de excepción en el registro.

selection
calculado

Valores: warning (Alerta), danger (Error)

heredado de mail.activity.mixin

activity_exception_iconIcono

Icono para indicar una actividad de excepción.

char
calculado

heredado de mail.activity.mixin

activity_idsActividadesone2many

inverso: res_id

heredado de mail.activity.mixin

activity_stateEstado de la actividad

Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities.

selection
calculado

Valores: overdue (De retraso), today (Hoy), planned (Planificado)

heredado de mail.activity.mixin

activity_summaryResumen de la siguiente actividadchar

related: activity_ids.summary

heredado de mail.activity.mixin

activity_type_iconIcono de tipo de actividadchar

related: activity_ids.icon

heredado de mail.activity.mixin

activity_type_idTipo de la siguiente actividadmany2one

related: activity_ids.activity_type_id

heredado de mail.activity.mixin

activity_user_idUsuario responsablemany2one
solo lecturacalculado

heredado de mail.activity.mixin

duration_trackingTiempo del estado

JSON que mapea IDs de un campo many2one a segundos utilizados

json
calculado

heredado de mail.tracking.duration.mixin

has_messageTiene un mensajeboolean
calculado

heredado de mail.thread

html_field_historyDatos del historialjson
solo lectura

heredado de html.field.history.mixin

html_field_history_metadataMetadatos del historialjson
calculado

heredado de html.field.history.mixin

is_rottingEn espera/estancadoboolean
calculado

heredado de mail.tracking.duration.mixin

message_attachment_countNúmero de archivos adjuntosinteger
calculado

heredado de mail.thread

message_follower_idsSeguidoresone2many

inverso: res_id

heredado de mail.thread

message_has_errorError de envío de mensaje

Si está marcada, algunos mensajes tienen error de envío.

boolean
calculado

heredado de mail.thread

message_has_error_counterNúmero de errores

Número de mensajes con error de envío

integer
calculado

heredado de mail.thread

message_has_sms_errorError de envío del SMS

Si está marcada, algunos mensajes tienen error de envío.

boolean
calculado

heredado de mail.thread

message_idsMensajesone2many

inverso: res_id

heredado de mail.thread

message_is_followerEs un seguidorboolean
calculado

heredado de mail.thread

message_needactionAcción requerida

Si está marcada, hay nuevos mensajes que requieren su atención.

boolean
calculado

heredado de mail.thread

message_needaction_counterNúmero de acciones

Número de mensajes que requieren una acción

integer
calculado

heredado de mail.thread

message_partner_idsSeguidores (Contactos)many2many
calculado

heredado de mail.thread

my_activity_date_deadlineFecha límite de mi actividaddate
solo lecturacalculado

heredado de mail.activity.mixin

rating_avgCalificación promediofloat
calculado

heredado de rating.mixin

rating_avg_textTexto de calificación mediaselection
calculado

Valores: top (Feliz), ok (Neutral), ko (Insatisfecho), none (Todavía no calificado)

heredado de rating.mixin

rating_countNúmero de calificacionesinteger
calculado

heredado de rating.mixin

rating_idsCalificacionesone2many

inverso: res_id

heredado de mail.thread

rating_last_feedbackÚltimos comentarios de la calificacióntext

related: rating_ids.feedback

heredado de rating.mixin

rating_last_imageÚltima imagen de la calificaciónbinary

related: rating_ids.rating_image

heredado de rating.mixin

rating_last_textTexto de calificaciónselection

related: rating_ids.rating_text

heredado de rating.mixin

rating_last_valueÚltimo valor de la calificaciónfloat
calculado, almacenado

heredado de rating.mixin

rating_percentage_satisfactionSatisfacción de calificaciónfloat
calculado

heredado de rating.mixin

rotting_daysDías en espera

Número de días desde la última actualización de este recurso

integer
calculado

heredado de mail.tracking.duration.mixin

create_uidCreado pormany2one
solo lecturaautomático
idIDinteger
solo lecturaautomático
write_uidÚltima actualización pormany2one
solo lecturaautomático

Relaciones

Modelos enlazados desde este modelo

Campos de otros modelos que apuntan aquí

Leer este modelo por la API

Ejemplo de llamada a la API JSON-2 de Odoo 19: lectura de los cinco primeros registros con campos reales del modelo. Sustituya la instancia, la base y la clave API por las suyas.

curl
curl -X POST "https://su-instancia.odoo.com/json/2/project.task/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: su-base" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["name","state","company_id","displayed_image_id","milestone_id"],"limit":5}'
Python (requests)
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.task/search_read",
    headers=headers,
    json={"domain": [], "fields": ["name","state","company_id","displayed_image_id","milestone_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-task">project.task (Odoo 19.0)</a>

Fuentes

Datos verificados el 23 de septiembre de 2026 · Odoo 19.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.