在 Odoo 日期选择器中禁用以前的日期

问题描述 投票:0回答:2

我想限制用户从 odoo-8 的日期选择器中选择之前的日期。请告诉我如何在 odoo datepicker 中禁用以前的日期

datepicker odoo datetimepicker
2个回答
3
投票

有一个模块https://apps.openerp.com/apps/modules/8.0/web_widget_datepicker_options/

如果您有一个名为 current_date 的日期字段

<field name="current_date" />

安装模块后,只需添加 jquery datepicker 的选项

minDate
并将其设置为 0 像这样

<field name="current_date" options="{'datepicker':{'minDate': 0}}"/>

截图 Screenshot

我之前这样做过 在字段上设置一个onchange,每次字段更改时都会触发该字段,并且在onchange中您可以将日期转换为python日期(使用odoo的默认时间格式)并将其与当前日期进行比较

from datetime import datetime
from openerp import api
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT
from openerp.exceptions import Warning

@api.onchange('current_date')
def onchange_date(self):
    if datetime.strptime(self.current_date, DEFAULT_SERVER_DATE_FORMAT).date() < datetime.now().date():
        raise warning('Please select a date equal/or greater than the current date')
        return False
    return my_date

0
投票

对于任何正在寻找适用于 Odoo 17 的解决方案的人。

首先,在

datetime_field.js
目录中的某个位置创建一个
static/
模块,并确保将其添加到
web.assets_backend
__manifest__.py
部分,例如:

{
  ...,
  "assets": {
    "web.assets_backend": [
      "<module_name>/static/src/views/**/*",
    ]
  },

然后定义

DateTimeField
扩展:

/** @odoo-module **/

import {
  DateTimeField,
  dateTimeField,
} from "@web/views/fields/datetime/datetime_field";
import { registry } from "@web/core/registry";


export class CustomDateTimeField extends DateTimeField {
  static defaultProps = {
    ...DateTimeField.defaultProps,
    minDate: "today",
  };
}

export const customDateTimeField = {
  ...dateTimeField,
  component: CustomDateTimeField,
};

registry.category("fields").add("custom_datetime", customDateTimeField);

在 XML 中使用此自定义小部件,如下所示:

<field name="some_datetime_field" widget="custom_datetime" />
© www.soinside.com 2019 - 2024. All rights reserved.