Odoo 20.0 Community · Persistente

hr.applicant: campos, relaciones y API

El modelo hr.applicant («Candidato») es un modelo persistente declarado por el módulo Reclutamiento y ampliado por 4 módulos más. Expone 113 campos, 72 de ellos declarados directamente en el modelo; 13 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
hr.applicant
Etiqueta
Candidato
Tipo
Persistente (models.Model)
Tabla SQL
hr_applicant
Módulo de origen
Reclutamiento (hr_recruitment)
Ampliado por
hr_recruitment_skills, hr_recruitment_sms, hr_recruitment_survey, website_hr_recruitment
Orden por defecto (_order)
priority desc, sequence, id desc
Campo mostrado (_rec_name)
partner_name
Hereda de (mixins)
mail.thread.main.attachmentmail.thread.blacklistmail.thread.phonemail.activity.mixinutm.mixinmail.tracking.duration.mixin

Campos del modelo

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

113 de 113 campos mostrados

Nombre técnicoEtiquetaTipoDetalles
activeActivo

Si el campo activo es False, le permitirá ocultar el caso sin eliminarlo.

boolean
applicant_notesNotas del solicitantehtml
applicant_propertiesPropiedadesproperties
applicant_skill_idsHabilidadesone2many

inverso: applicant_id

añadido por Recruitment - Skills Management (hr_recruitment_skills)

application_countNúmero de solicitudes

Solicitudes con el mismo correo electrónico o número de teléfono

integer
calculado
application_statusEstado de la solicitudselection
calculado

Valores: ongoing (En curso), hired (Contratado), refused (Rechazado), archived (Archivado)

attachment_idsArchivos adjuntosone2many

inverso: res_id

attachment_numberNúmero de archivos adjuntosinteger
calculado
availabilityDisponibilidad

La fecha en que el candidato estará disponible para empezar a trabajar

date
campaign_idCampañamany2one
categ_idsEtiquetasmany2many
colorÍndice de Coloresinteger
company_idCompañíamany2one
calculado, almacenado
create_dateAplicado eldatetime
solo lectura
currency_idMonedamany2one

related: company_id.currency_id

current_applicant_skill_idsHabilidades actuales del solicitanteone2many
calculado

inverso: applicant_id

añadido por Recruitment - Skills Management (hr_recruitment_skills)

date_closedFecha de contratacióndatetime
calculado, almacenado
date_last_stage_updateÚltima actualización de la etapadatetime
date_openAsignadodatetime
solo lectura
day_closeDías para cerrarfloat
calculado
day_openDías para abrirfloat
calculado
degree_scoreDegree Scoreinteger
calculado, almacenado

añadido por Recruitment - Skills Management (hr_recruitment_skills)

delay_closeTiempo para el cierre

Número de días para cerrar

float
solo lecturacalculado, almacenado
department_idDepartamentomany2one
calculado, almacenado
email_fromCorreo electrónicochar
calculado, almacenado
email_normalizedEmail Normalizedchar
emp_is_activeEmpleado activoboolean

related: employee_id.active

employee_idEmpleado

Empleado vinculado con el candidato.

many2one
employee_nameNombre del empleadochar

related: employee_id.name

interviewer_idsEntrevistadoresmany2many
is_applicant_in_pool¿El candidato está en la reserva de talentos?boolean
calculado
is_degree_score_matchingDegree Score Matchingboolean
calculado

añadido por Recruitment - Skills Management (hr_recruitment_skills)

is_pool_applicant¿Es un candidato de la reserva de talentos?boolean
calculado
job_expected_degreeJob Degreemany2one
solo lectura

related: job_id.expected_degree

añadido por Recruitment - Skills Management (hr_recruitment_skills)

job_idPuesto de trabajomany2one
→ hr.job
kanban_stateEstado de kanbanselection
obligatorio

Valores: normal (En proceso), done (Listo), waiting (En espera), blocked (Bloqueado)

last_stage_idÚltima etapa

Etapa del candidato antes de estar en la etapa actual. Usado para el análisis de los casos perdidos.

many2one
linked_applicant_idsSolicitudesone2many

inverso: pool_applicant_id

linkedin_profilePerfil de LinkedInchar
matching_scorePorcentaje de coincidenciainteger
calculado, almacenado

añadido por Recruitment - Skills Management (hr_recruitment_skills)

matching_skill_idsMatching Factorsmany2many
calculado

añadido por Recruitment - Skills Management (hr_recruitment_skills)

medium_idMedio

Muestra cómo se comunicó el solicitante, por ejemplo, por correo electrónico, LinkedIn, sitio web, etc.

many2one
meeting_display_dateMostrar fecha de la reunióndate
calculado
meeting_display_textTexto de reunión mostradochar
calculado
meeting_idsReunionesone2many

inverso: applicant_id

missing_skill_idsMissing Factorsmany2many
calculado

añadido por Recruitment - Skills Management (hr_recruitment_skills)

partner_idContactomany2one
partner_nameNombre del candidatochar
partner_phoneTeléfonochar
calculado, almacenado
partner_phone_sanitizedNúmero de teléfono depuradochar
calculado, almacenado
pool_applicant_idCandidato de la reserva de talentosmany2one
priorityEvaluaciónselection

Valores: 0 (Normal), 1 (Bueno), 2 (Muy bueno), 3 (Excelente)

probabilityProbabilidadfloat
recruiter_emailRecruiter Work Emailchar
solo lectura

related: recruiter_id.work_email

recruiter_idReclutadormany2one
calculado, almacenado
refuse_dateFecha de rechazodatetime
refuse_reason_idRazón del rechazomany2one
response_idsRespuestasone2many

inverso: applicant_id

añadido por Hr Recruitment Interview Forms (hr_recruitment_survey)

salary_expectedEsperado

Salario esperado por el candidato

monetary
salary_expected_extraSalario adicional esperado

Salario esperado por el candidato, con ventajas adicionales

char
salary_proposedPropuesto

Salario propuesto por la organización

monetary
salary_proposed_extraSalario adicional propuesto

Salario propuesto por la organización, con ventajas adicionales

char
schedule_paySchedule Payselection
obligatorio

Valores: hourly (Hora), daily (Día), weekly (Semana), biweekly (Bi-Week), monthly (Mes), yearly (Año)

sequenceSecuenciainteger
skill_idsHabilidadmany2many
calculado, almacenado

añadido por Recruitment - Skills Management (hr_recruitment_skills)

skills_scoreSkills Scoreinteger
calculado, almacenado

añadido por Recruitment - Skills Management (hr_recruitment_skills)

source_idOrigenmany2one
stage_idEtapamany2one
calculado, almacenado
survey_idEncuestamany2one
solo lectura

related: job_id.survey_id

añadido por Hr Recruitment Interview Forms (hr_recruitment_survey)

talent_pool_countNúmero de reservas de talentosinteger
calculado
talent_pool_idsReservas de talentosmany2many
type_idTítulomany2one
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_plans_idsPlanes de actividadesmany2many
calculado

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, almacenado

heredado de mail.tracking.duration.mixin

has_messageTiene un mensajeboolean
calculado

heredado de mail.thread

is_blacklistedLista negra

Si la dirección de correo electrónico está en la lista negra, el contacto ya no recibirá más envíos masivos desde ninguna lista

boolean
calculado

heredado de mail.thread.blacklist

is_rottingEn espera/estancadoboolean
calculado

heredado de mail.tracking.duration.mixin

message_attachment_countNúmero de archivos adjuntosinteger
calculado

heredado de mail.thread

message_bounceRebotado

Contador del número de correos electrónicos rebotados de este contacto

integer

heredado de mail.thread.blacklist

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_main_attachment_idArchivo adjunto principalmany2one

heredado de mail.thread.main.attachment

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

phone_blacklistedEl teléfono en la lista negra es un teléfono

Indicates if a blacklisted sanitized phone number is a phone number. Helps distinguish which number is blacklisted when there is both a mobile and phone field in a model.

boolean
calculado

heredado de mail.thread.phone

phone_formattedFormatted Numberchar
calculado

heredado de mail.thread.phone

phone_sanitizedNúmero depurado

Campo utilizado para almacenar el número de teléfono depurado. Ayuda a acelerar las búsquedas y las comparaciones.

char
calculado, almacenado

heredado de mail.thread.phone

phone_sanitized_blacklistedTeléfono en la lista negra

Si el teléfono está en la lista negra, el contacto ya no recibirá correo masivo de sms de ninguna lista.

boolean
calculado

heredado de mail.thread.phone

rating_idsCalificacionesone2many

inverso: res_id

heredado de mail.thread

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

utm_referenceReferencia UTMreference

heredado de utm.mixin

create_uidCreado pormany2one
solo lecturaautomático
display_nameNombre mostradochar
solo lecturacalculadoautomático
idIDinteger
solo lecturaautomático
write_dateÚltima actualización eldatetime
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 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
curl -X POST "https://su-instancia.odoo.com/json/2/hr.applicant/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: su-base" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["partner_name","kanban_state","schedule_pay","campaign_id","company_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}/hr.applicant/search_read",
    headers=headers,
    json={"domain": [], "fields": ["partner_name","kanban_state","schedule_pay","campaign_id","company_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/hr-applicant">hr.applicant (Odoo 20.0)</a>

Fuentes

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.