Odoo18门户模板日期字段默认值设置:生日填充出现异常值
Odoo18门户模板生日字段自动填充显示01/01/1970问题排查与解决
问题原因分析
01/01/1970是Unix纪元起始日期,通常是前端日期组件将无效/空值解析为0时间戳导致的。结合你的代码,可能的触发场景:
last_app未匹配到对应的hr.applicant记录(空记录集),导致last_app.birthday返回空值- 即使
last_app存在,其birthday字段本身为空,你的表达式返回空字符串,被o_website_form_date组件解析为0时间戳 - 查询条件存在冗余逻辑,可能引发匹配异常
排查步骤
验证记录匹配情况
在模板中临时添加调试代码,确认last_app和birthday的实际值:<t t-esc="last_app.id"/> <!-- 查看是否获取到申请人ID --> <t t-esc="last_app.birthday"/> <!-- 查看生日字段实际值 --> <t t-esc="partner.id"/> <!-- 确认当前门户用户的伙伴ID是否正确 -->简化查询条件
你原代码中的'|', ('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
相关产品推荐
相关产品推荐

