如何在odoo日期选择器中禁用当前日期后的天数?

2024-05-17 00:13:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有日期字段的视图。用户不得选择今天之后的日期。如何在Odoo datepicker中禁用当前日期之后的所有天


Tags: 用户odoo视图datepicker
1条回答
网友
1楼 · 发布于 2024-05-17 00:13:12

日期选择器maxDate用于设置可选择的最大日期,该日期将在当前日期之后禁用

我没有找到从XML动态传递当前日期的方法,因此我重写了fields_view_get以更改options属性,并将maxDate设置为当前日期

以下示例将maxDate选项设置为date_invoice

class AccountInvoice(models.Model):
    _inherit = 'account.invoice'

    @api.model
    def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
        res = super(AccountInvoice, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
        if view_type == 'form':
            doc = etree.XML(res['arch'])
            for node in doc.xpath("//field[@name='date_invoice']"):
                node.set('options', "{'datepicker': {'maxDate': '%sT23:59:59'}}" % fields.Date.today().strftime(DEFAULT_SERVER_DATE_FORMAT))
            res['arch'] = etree.tostring(doc)
        return res

编辑:

您可以在XPATH表达式中使用or来指定第二个字段名

doc.xpath("//field[@name='date_invoice' or @name='date_due']")

编辑:

尝试在23:59:59指定一个时间

node.set('options', "{'datepicker': {'maxDate': '%sT23:59:59'}}" % fields.Date.today().strftime(DEFAULT_SERVER_DATE_FORMAT))

相关问题 更多 >