Odoo 19.0 Community · Persistent

project.task: fields, relations and API

The project.task model ("Task") is a persistent model declared by the Project module, then extended by 8 other modules. It exposes 144 fields, 102 of them declared directly on the model; 18 fields from other models point to it. Below you will find every field with its technical name, type, label and relations, followed by an Odoo 19 JSON-2 API call.

Model identity

Technical name
project.task
Label
Task
Type
Persistent (models.Model)
SQL table
project_task
Origin module
Project (project)
Extended by
hr_timesheet, project_hr_skills, sale_project, project_sms, project_timesheet_holidays, project_todo, sale_timesheet, website_project
Default order (_order)
priority desc, sequence, date_deadline asc, id desc
Inherits from (mixins)
portal.mixinmail.thread.ccmail.activity.mixinrating.mixinmail.tracking.duration.mixinhtml.field.history.mixin

Model fields

102 own fields, 39 inherited from mixins and 3 automatic ORM fields. Click a name to get a direct link to that field.

144 of 144 fields shown

Technical nameLabelTypeDetails
activeActiveboolean
allocated_hoursAllocated Timefloat
allow_billableAllow Billableboolean

related: project_id.allow_billable

added by Sales - Project (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
read-onlycomputed

added by Task Logs (hr_timesheet)

analytic_account_activeActive Analytic Accountboolean

related: project_id.analytic_account_active

added by Task Logs (hr_timesheet)

attachment_idsAttachments

Attachments that don't come from a message

one2many
computed
child_idsSub-tasksone2many

inverse: parent_id

closed_depend_on_countClosed Depending on Tasksinteger
computed
closed_subtask_countClosed Sub-tasks Countinteger
computed
colorColor Indexinteger
company_idCompanymany2one
computed, stored
create_dateCreated Ondatetime
read-only
current_user_same_company_partnerCurrent User Same Company Partnerboolean
computed
date_assignAssigning Date

Date on which this task was last assigned (or unassigned). Based on this, you can get statistics on the time it usually takes to assign tasks.

datetime
read-only
date_deadlineDeadlinedatetime
date_endEnding Datedatetime
date_last_stage_updateLast Stage Update

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
read-only
depend_on_countDepending on Tasksinteger
computed
depend_on_idsBlocked Bymany2many
dependent_idsBlockmany2many
dependent_tasks_countDependent Tasksinteger
computed
descriptionDescriptionhtml
display_follow_buttonDisplay Follow Buttonboolean
computed
display_in_projectDisplay In Projectboolean
computed, stored
display_nameDisplay Name

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
computed
display_sale_order_buttonDisplay Sales Orderboolean
computed

added by Sales - Project (sale_project)

displayed_image_idCover Imagemany2one
effective_hoursTime Spentfloat
computed, stored

added by Task Logs (hr_timesheet)

email_ccEmail Cc

Email addresses that were in the CC of the incoming emails from this task and that are not currently linked to an existing customer.

char
email_fromEmail Fromchar
encode_uom_in_daysEncode Uom In Daysboolean
computed

added by Task Logs (hr_timesheet)

has_late_and_unreached_milestoneHas Late And Unreached Milestoneboolean
computed
has_multi_solHas Multi Solboolean
computed

added by Sales Timesheet (sale_timesheet)

has_project_templateHas Project Templateboolean

related: project_id.is_template

has_template_ancestorHas Template Ancestorboolean
computed, stored
is_closedClosed stateboolean
computed
is_project_map_emptyIs Project map emptyboolean
computed

added by Sales Timesheet (sale_timesheet)

is_templateIs Templateboolean
is_timeoff_taskIs Time off Taskboolean
computed

added by Timesheet when on Time Off (project_timesheet_holidays)

last_sol_of_customerLast Sol Of Customermany2one
computed

added by Sales Timesheet (sale_timesheet)

leave_types_countTime Off Types Countinteger
computed

added by Timesheet when on Time Off (project_timesheet_holidays)

milestone_idMilestone

Deliver your services automatically when a milestone is reached by linking it to a sales order item.

many2one
computed, stored
nameTitlechar
required
overtimeOvertimefloat
computed, stored

added by Task Logs (hr_timesheet)

parent_idParent Taskmany2one
partner_company_nameCompany Namechar

related: partner_id.company_name

added by Online Task Submission (website_project)

partner_idCustomermany2one
computed, stored
partner_nameCustomer Namechar

related: partner_id.name

added by Online Task Submission (website_project)

partner_phoneContact Numberchar
computed, stored
personal_stage_idPersonal Stage State

The current user's personal stage.

many2one
computed
personal_stage_type_idPersonal Stage

The current user's personal task stage.

many2one

related: personal_stage_id.stage_id

personal_stage_type_idsPersonal Stagesmany2many
portal_user_namesPortal User Nameschar
computed
pricing_typePricing Typeselection

related: project_id.pricing_type

added by Sales Timesheet (sale_timesheet)

priorityPriorityselection

Values: 0 (Low priority), 1 (Medium priority), 2 (High priority), 3 (Urgent)

progressProgressfloat
computed, stored

added by Task Logs (hr_timesheet)

project_idProjectmany2one
computed, stored
project_privacy_visibilityProject Visibilityselection

related: project_id.privacy_visibility

project_sale_order_idProject's sale ordermany2one

related: project_id.sale_order_id

added by Sales - Project (sale_project)

rating_activeStage Rating Statusboolean

related: stage_id.rating_active

recurrence_idRecurrencemany2one
recurring_countTasks in Recurrenceinteger
computed
recurring_taskRecurrentboolean
remaining_hoursTime Remaining

Number of allocated hours minus the number of hours spent.

float
read-onlycomputed, stored

added by Task Logs (hr_timesheet)

remaining_hours_availableRemaining Hours Availableboolean

related: sale_line_id.remaining_hours_available

added by Sales Timesheet (sale_timesheet)

remaining_hours_percentageRemaining Hours Percentagefloat
computed

added by Task Logs (hr_timesheet)

remaining_hours_soTime Remaining on SOfloat
computed

added by Sales Timesheet (sale_timesheet)

repeat_intervalRepeat Everyinteger
computed
repeat_typeUntilselection
computed

Values: forever (Forever), until (Until)

repeat_unitRepeat Unitselection
computed

Values: day (Days), week (Weeks), month (Months), year (Years)

repeat_untilEnd Datedate
computed
role_idsProject Roles

When you create a project from a template, you can choose which employee takes each role. These employees will be added to the tasks, along with anyone already assigned.

many2many
sale_line_idSales Order Item

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
computed, stored

added by Sales - Project (sale_project)

sale_order_idSales Order

Sales order to which the task is linked.

many2one
computed, stored

added by Sales - Project (sale_project)

sale_order_stateSale Order Stateselection

related: sale_order_id.state

added by Sales - Project (sale_project)

sequenceSequenceinteger
stage_idStagemany2one
computed, stored
stage_id_colorStage Colorinteger

related: stage_id.color

stateStateselection
requiredcomputed, stored

Values computed at runtime

subtask_allocated_hoursSub-tasks Allocated Time

Sum of the hours allocated for all the sub-tasks (and their own sub-tasks) linked to this task. Usually less than or equal to the allocated hours of this task.

float
computed
subtask_completion_percentageSubtask Completion Percentagefloat
computed
subtask_countSub-task Countinteger
computed
subtask_effective_hoursTime Spent on Sub-tasks

Time spent on the sub-tasks (and their own sub-tasks) of this task.

float
computed, stored

added by Task Logs (hr_timesheet)

tag_idsTagsmany2many
task_propertiesPropertiesproperties
task_to_invoiceTo invoiceboolean
computed

added by Sales - Project (sale_project)

timesheet_idsTimesheetsone2many

inverse: task_id

added by Task Logs (hr_timesheet)

timesheet_product_idTimesheet Productmany2one

related: project_id.timesheet_product_id

added by Sales Timesheet (sale_timesheet)

total_hours_spentTotal Time Spent

Time spent on this task and its sub-tasks (and their own sub-tasks).

float
computed, stored

added by Task Logs (hr_timesheet)

user_idsAssigneesmany2many
user_skill_idsUser Skillone2many

related: user_ids.employee_skill_ids

added by Project - Skills (project_hr_skills)

website_message_idsWebsite Messageone2many
working_days_closeWorking Days to Closefloat
computed, stored
working_days_openWorking Days to Assignfloat
computed, stored
working_hours_closeWorking Hours to Closefloat
computed, stored
working_hours_openWorking Hours to Assignfloat
computed, stored
write_dateLast Updated Ondatetime
read-only
access_tokenSecurity Tokenchar

inherited from portal.mixin

access_urlPortal Access URL

Customer Portal URL

char
computed

inherited from portal.mixin

access_warningAccess warningtext
computed

inherited from portal.mixin

activity_calendar_event_idNext Activity Calendar Eventmany2one
computed

inherited from mail.activity.mixin

activity_date_deadlineNext Activity Deadlinedate
read-onlycomputed

inherited from mail.activity.mixin

activity_exception_decorationActivity Exception Decoration

Type of the exception activity on record.

selection
computed

Values: warning (Alert), danger (Error)

inherited from mail.activity.mixin

activity_exception_iconIcon

Icon to indicate an exception activity.

char
computed

inherited from mail.activity.mixin

activity_idsActivitiesone2many

inverse: res_id

inherited from mail.activity.mixin

activity_stateActivity State

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

selection
computed

Values: overdue (Overdue), today (Today), planned (Planned)

inherited from mail.activity.mixin

activity_summaryNext Activity Summarychar

related: activity_ids.summary

inherited from mail.activity.mixin

activity_type_iconActivity Type Iconchar

related: activity_ids.icon

inherited from mail.activity.mixin

activity_type_idNext Activity Typemany2one

related: activity_ids.activity_type_id

inherited from mail.activity.mixin

activity_user_idResponsible Usermany2one
read-onlycomputed

inherited from mail.activity.mixin

duration_trackingStatus time

JSON that maps ids from a many2one field to seconds spent

json
computed

inherited from mail.tracking.duration.mixin

has_messageHas Messageboolean
computed

inherited from mail.thread

html_field_historyHistory datajson
read-only

inherited from html.field.history.mixin

html_field_history_metadataHistory metadatajson
computed

inherited from html.field.history.mixin

is_rottingRottingboolean
computed

inherited from mail.tracking.duration.mixin

message_attachment_countAttachment Countinteger
computed

inherited from mail.thread

message_follower_idsFollowersone2many

inverse: res_id

inherited from mail.thread

message_has_errorMessage Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_has_error_counterNumber of errors

Number of messages with delivery error

integer
computed

inherited from mail.thread

message_has_sms_errorSMS Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_idsMessagesone2many

inverse: res_id

inherited from mail.thread

message_is_followerIs Followerboolean
computed

inherited from mail.thread

message_needactionAction Needed

If checked, new messages require your attention.

boolean
computed

inherited from mail.thread

message_needaction_counterNumber of Actions

Number of messages requiring action

integer
computed

inherited from mail.thread

message_partner_idsFollowers (Partners)many2many
computed

inherited from mail.thread

my_activity_date_deadlineMy Activity Deadlinedate
read-onlycomputed

inherited from mail.activity.mixin

rating_avgAverage Ratingfloat
computed

inherited from rating.mixin

rating_avg_textRating Avg Textselection
computed

Values: top (Happy), ok (Neutral), ko (Unhappy), none (Not Rated yet)

inherited from rating.mixin

rating_countRating countinteger
computed

inherited from rating.mixin

rating_idsRatingsone2many

inverse: res_id

inherited from mail.thread

rating_last_feedbackRating Last Feedbacktext

related: rating_ids.feedback

inherited from rating.mixin

rating_last_imageRating Last Imagebinary

related: rating_ids.rating_image

inherited from rating.mixin

rating_last_textRating Textselection

related: rating_ids.rating_text

inherited from rating.mixin

rating_last_valueRating Last Valuefloat
computed, stored

inherited from rating.mixin

rating_percentage_satisfactionRating Satisfactionfloat
computed

inherited from rating.mixin

rotting_daysDays Rotting

Day count since this resource was last updated

integer
computed

inherited from mail.tracking.duration.mixin

create_uidCreated bymany2one
read-onlyautomatic
idIDinteger
read-onlyautomatic
write_uidLast Updated bymany2one
read-onlyautomatic

Relations

Models linked from this model

Fields of other models pointing here

Reading this model through the API

Odoo 19 JSON-2 API call reading the first five records with real fields of the model. Replace the instance, database and API key with your own.

curl
curl -X POST "https://your-instance.odoo.com/json/2/project.task/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -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://your-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "your-db"}

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())
  • External API access requires Odoo's Custom plan.
  • XML-RPC and JSON-RPC will be removed in Odoo 22 (fall 2028): use JSON-2.
  • The access rights and record rules of the key's user apply.

Cite this tool

Writing a tutorial, internal documentation or a forum answer? Copy this link to send your readers to the up-to-date reference.

<a href="https://aidoo.ai/en/outils/explorateur-modeles-odoo/project-task">project.task (Odoo 19.0)</a>

Sources

Data verified on September 23, 2026 · Odoo 19.0 Community

Have an Odoo project, or want to put your ERP to work with AI? Let's talk

Implementation, custom module development, connecting Claude or ChatGPT to your data: tell us about your context and we will reply within 24 business hours.