You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo18门户模板日期字段默认值设置:生日填充出现异常值

Odoo18门户模板生日字段自动填充显示01/01/1970问题排查与解决

问题原因分析

01/01/1970是Unix纪元起始日期,通常是前端日期组件将无效/空值解析为0时间戳导致的。结合你的代码,可能的触发场景:

  1. last_app未匹配到对应的hr.applicant记录(空记录集),导致last_app.birthday返回空值
  2. 即使last_app存在,其birthday字段本身为空,你的表达式返回空字符串,被o_website_form_date组件解析为0时间戳
  3. 查询条件存在冗余逻辑,可能引发匹配异常

排查步骤

  1. 验证记录匹配情况
    在模板中临时添加调试代码,确认last_app和birthday的实际值:

    <t t-esc="last_app.id"/> <!-- 查看是否获取到申请人ID -->
    <t t-esc="last_app.birthday"/> <!-- 查看生日字段实际值 -->
    <t t-esc="partner.id"/> <!-- 确认当前门户用户的伙伴ID是否正确 -->
    
  2. 简化查询条件
    你原代码中的'|', ('active', '=', False), ('active', '=', True)属于冗余逻辑(覆盖所有active状态的记录),可直接删除,避免条件解析异常:

    <t t-set="last_app" t-value="request.env['hr.applicant'].search([('partner_id', '=', partner.id)], order='id desc', limit=1)"/>
    

解决方案

通过条件渲染处理空值场景,避免前端组件将空字符串解析为1970-01-01:

方案1:条件赋值value属性

<t t-set="last_app" t-value="request.env['hr.applicant'].search([('partner_id', '=', partner.id)], order='id desc', limit=1)"/>
<xpath expr="//input[@name='birthday']" position="replace">
<input id="birthday_input"
     type="text"
     name="birthday"
     class="form-control o_website_form_date"
     t-att-value="last_app.birthday.strftime('%Y-%m-%d') if last_app and last_app.birthday else None"
     data-date-format="yyyy-mm-dd"
     required="required"
     placeholder="YYYY-MM-DD"/>
</xpath>

方案2:拆分条件渲染(更清晰)

<t t-set="last_app" t-value="request.env['hr.applicant'].search([('partner_id', '=', partner.id)], order='id desc', limit=1)"/>
<xpath expr="//input[@name='birthday']" position="replace">
<t t-if="last_app and last_app.birthday">
<input id="birthday_input"
     type="text"
     name="birthday"
     class="form-control o_website_form_date"
     t-att-value="last_app.birthday.strftime('%Y-%m-%d')"
     data-date-format="yyyy-mm-dd"
     required="required"
     placeholder="YYYY-MM-DD"/>
</t>
<t t-else="">
<input id="birthday_input"
     type="text"
     name="birthday"
     class="form-control o_website_form_date"
     data-date-format="yyyy-mm-dd"
     required="required"
     placeholder="YYYY-MM-DD"/>
</t>
</xpath>

关键说明

  • 当last_app为空记录集或birthday字段为空时,不设置value属性(或设置为None),让前端组件保持空输入状态
  • 确认门户模板中的partner变量正确指向当前用户的关联伙伴,否则会导致partner.id无效

内容的提问来源于stack exchange,提问作者khelili miliana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:19:58