自定义odoo 13 widget(实现odoo日历区间选择,只能选择当前日期及以后的时间)

493 阅读1分钟

需求说明:

在创建需要的选择日期的数据时,有时会有不能选择当前日期之前时间的限制,针对这样的需求开发了一个自定义的widget

实现方式:

首先找到odoo中现有的关于日期的widget,参考其写法,odoo存在date和detatime两个widget,可以根据自己的字段类型来扩展widget

代码如下:

odoo.define('dboms.db_date_widget', function (require) {
    "use strict";
 
    var registry = require('web.field_registry');
    var FieldDate = require('web.basic_fields').FieldDate;
    var datepicker = require('web.datepicker');
    var section_date = FieldDate.extend({
        // 重写此方法
        _makeDatePicker: function () {
            let newDate = moment();
            // 把当前时间传入日历暴露出来的minDate属性
            this.datepickerOptions['minDate'] = moment({Y:newDate.year(), M:newDate.month(), d:newDate.date()});
            return new datepicker.DateWidget(this, this.datepickerOptions);
        },
 
    })
    // 注册名称为db_date_widget的widget
    registry.add('db_date_widget', section_date);
 
 
});

说明:

odoo.define('dboms.db_date_widget', function (require) 定义一个widget的固定写法,

'dboms.db_date_widget' 可以理解为注册的类名

  • 在xml中 增加widget属性
	<field name='create_date' string='创建日期' widget='db_date_widget'/>