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

Odoo 11 Survey模块:如何将Answers中的Deadline datetime字段默认时间设置为23:59

解决Odoo 11 Survey模块Answer截止时间默认23:59的问题

我来帮你搞定这个截止时间的问题!你之前的代码没生效,核心原因是Odoo的Datetime字段需要完整的「日期+时间」格式字符串,而你只返回了时间部分,Odoo无法正确解析,所以会 fallback 到默认的时区相关时间(比如你看到的5:30,大概率是服务器时区的默认偏移)。

下面给你两种场景的解决方案,对应你的需求:

场景1:让Answer的截止时间默认是「当前日期的23:59:59」

直接修改字段的default值,用Python的datetime模块生成完整的日期时间:

from datetime import datetime
from odoo import fields, models

class SurveyUserInput(models.Model):
    _inherit = 'survey.user_input'  # 对应Answers模块的核心模型

    deadline = fields.Datetime(
        'Deadline',
        help="Date by which the person can open the survey and submit answers",
        oldname="date_deadline",
        default=lambda self: datetime.now().replace(hour=23, minute=59, second=59)
    )

这个写法会获取当前系统日期,然后把时间部分替换为23:59:59,生成完整的datetime字符串,Odoo就能正确识别了。

场景2:从Survey向导的日期字段传递截止日期,自动补23:59:59

如果你的流程是:用户在向导里选择一个日期,然后Answer的截止时间自动设为该日期的23:59,那需要在向导的创建逻辑里处理:

from odoo import models, fields

class SurveyWizard(models.TransientModel):
    _name = 'survey.wizard'  # 你的Survey向导模型

    deadline_date = fields.Date('Deadline Date')  # 向导里的日期字段
    survey_id = fields.Many2one('survey.survey', string='Survey')

    def action_create_survey_answer(self):
        self.ensure_one()
        # 拼接日期和目标时间
        deadline_datetime = f"{self.deadline_date} 23:59:59" if self.deadline_date else None
        # 创建Answer记录
        self.env['survey.user_input'].create({
            'survey_id': self.survey_id.id,
            'deadline': deadline_datetime,
            # 其他必填字段...
        })

这样用户在向导选的日期,会自动加上23:59的时间,完美匹配你的需求。

额外提示

  • 如果你遇到时区问题(比如显示的时间和预期有偏移),可以改用Odoo内置的fields.Datetime.now()来获取带时区的时间,再替换小时分钟:
    default=lambda self: fields.Datetime.now().replace(hour=23, minute=59, second=59)
    
  • 确保你继承的模型是正确的:Odoo 11的Survey Answer对应的模型确实是survey.user_input,别搞错啦!

内容的提问来源于stack exchange,提问作者Pawan Kumar Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:07:52