需求说明:
在创建需要的选择日期的数据时,有时会有不能选择当前日期之前时间的限制,针对这样的需求开发了一个自定义的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'/>