【问题标题】:How to format a particular datetime field in Odoo 8?如何格式化 Odoo 8 中的特定日期时间字段?
【发布时间】:2017-11-23 09:38:08
【问题描述】:

我想在 Odoo 8 中以 12 小时格式显示和选择特定的日期时间字段。通常,它是通过以下方式完成的:设置 > 翻译 > 语言 > 编辑 > 时间格式,但我想要为某个表单视图上的单个日期时间字段执行此操作。

我们将不胜感激。

【问题讨论】:

  • 是QWeb视图还是XML视图?
  • 这是一个 xml 视图。我知道如何在 qweb 视图中做到这一点。
  • 您可以通过创建依赖字段来使用解决方法,该字段以某种格式计算时间,并且在视图中,您可以使用该字段。这样做您还必须注意创建和更新记录期间的值。

标签: openerp views odoo-8 datetime-format


【解决方案1】:

我认为你有一些选择:

  • 解决方案 0,简单。在writecreate orm 方法中转换日期时间字段。例如,如果在字段中插入了25/11/2017 16:41:51,您应该将其转换为25/11/2017 4:41:51。这就是 Odoo 默认为 12 小时格式制作的内容。

  • 解决方案 1,简单。更改字段以仅选择日期,如下所示:

    <field name="date" widget="date"/>
    

    您可以创建另一个字段来设置时间:

    time = fields.Float(
        string='Time'
    )
    

    您可以使用float_time 小部件在表单中显示时间格式:

    <field name="time" widget="float_time" />
    

    您也可以根据需要在writecreate 方法中进行验证或转换。

  • 解决方案 2,困难。您可以创建一个新的小部件,也可以更改日期时间选择器的滑块,JavaScript 函数在文件/addons_path/web/static/lib/jquery.ui.timepicker/js/jquery-ui-timepicker-addon.js

    $.extend(Timepicker.prototype, {
    
        // [...]
    
        _injectTimePicker: function() {
    
            // [...]
    
            this.hour_slider = $tp.find('#ui_tpicker_hour_'+ dp_id).slider({
                orientation: "horizontal",
                value: this.hour,
                min: o.hourMin,
                max: hourMax,       // this is the value to change
                step: o.stepHour,
                slide: function(event, ui) {
                    tp_inst.hour_slider.slider( "option", "value", ui.value);
                    tp_inst._onTimeChange();
                }
            });
    

    您还必须覆盖验证,我认为没有简单的方法可以找到它。您也可以在 writecreate 方法中进行此验证,以使其更容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 2023-04-05
    • 2013-02-02
    • 1970-01-01
    相关资源
    最近更新 更多