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

Odoo 13设置日期字段默认值出现日期格式不匹配错误求助

错误原因
  • 字段默认值参数使用错误:Odoo的字段default参数如果要指定函数作为默认值,直接传入函数对象即可,不需要加引号。你当前写法传入的是字符串'_set_default_date',Odoo会尝试将这个字符串解析为日期格式,最终触发格式不匹配报错。
  • 方法内部变量未定义:_set_default_date方法中直接使用了未声明的year、month变量,即使默认值参数改对也会触发变量不存在的报错。
  • 缺失date类导入:你当前只导入了datetime,没有导入date类,直接调用date()构造对象会触发名称错误。
正确实现方案

完整可运行代码如下:

from datetime import date
from calendar import monthrange
from odoo import models, fields

class Whatever(models.Model):
    _name = 'your.model.name' # 替换为你实际的模型标识

    end_date = fields.Date(
        string='End date', 
        default=lambda self: self._set_default_date()
    )

    def _set_default_date(self):
        # 取当前日期的年、月
        today = date.today()
        # 计算当月总天数
        last_day = monthrange(today.year, today.month)[1]
        # Odoo Date字段原生支持date类型返回值,无需手动转字符串
        return date(today.year, today.month, last_day)

补充简化写法:如果你的环境引入了dateutil工具库,也可以用更简洁的逻辑计算当月最后一天,自动适配不同月份的最大天数:

from dateutil.relativedelta import relativedelta

def _set_default_date(self):
    return date.today() + relativedelta(day=31)

内容的提问来源于stack exchange,提问作者for-loop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:06:02