【问题标题】:Odoo 10: Change datetime picker options for a fieldOdoo 10:更改字段的日期时间选择器选项
【发布时间】:2017-10-06 13:00:01
【问题描述】:

这是使用 Odoo 10 和默认的 bootstrap-datetimepicker。

我的视图中有一个具有“事件开始”日期时间的字段。我希望日期选择器以 5 分钟的间隔工作 (minuteStepping: 5) 并显示时间选择器和日期选择器 (sideBySide: true)。

我已通过手动编辑 addons/web/static/src/js/widgets/date_picker.js 确认这可以正常工作。

但是,我更愿意在视图 XML 中的 <form> 标记下将我想要更改的两个选项作为参数提供给我的 <field ..> 定义。源 Widget 在其 init 方法中接受 options 参数,该参数扩展为最终的选项对象,但我无法将配置选项插入此对象。

我尝试将其指定为 <field ... options="{...}".. t-field-options='..',但我猜后者不会起作用,因为在我看来,我不在 qweb 上下文中,并且第一个不被阅读小部件。

有什么方法可以在不创建新小部件的情况下做到这一点? (希望不继承或扩展现有小部件,而是将其保留为纯视图配置选项)?

【问题讨论】:

    标签: openerp odoo-9 odoo-10


    【解决方案1】:

    您可以在此模块中看到一个很好的示例。 https://github.com/OCA/web/tree/10.0/web_m2x_options

    在文件中。静态/src/js/form.js.

    模块已经覆盖了字段Many2one,可以在字段的XML声明中设置不同的选项。

    Example : <field name="partner_id" options="{'search_more':true}" />
    

    在这个例子中。搜索更多按钮在所有情况下都可见。

    您可以将此模块的逻辑用作小部件扩展的基础。

    安装:

    第一次,您必须下载 Github 存储库。

    https://github.com/jo541/web

    选择分支 10.0. 在存储库中,有一个名为“web_widget_datepicker_options”的模块。该模块使您可以根据需要为特定字段指定任何选项。

    在 Odoo 上下载并安装模块后。您需要重新加载浏览器的缓存才能确定。

    修改:

    现在您可以修改表单视图。例如,我将使用视图表单 sale.order。

    在表单视图 sale.order 中,您有一个字段“date_order”。如果您希望时间步长 5 到 5。

    <field name="date_order" options="{'datepicker':{'minuteStepping': 5}}" attrs="{'invisible': [('state', 'in', ['sale', 'done', 'cancel'])]}"/>
    

    datepicker 的字典中的所有选项都将添加到引导日期选择器的选项中。

    【讨论】:

    • 感谢您的回答!但问题是我如何/是否可以将自定义设置传递给日期选择器,而不是如何为我自己的自定义模块提供选项——这是我想要避免的事情。编写我自己的日期选择器小部件(即使只是将现有的子类化)来更改其配置是我不想做的。
    • 我找到了一个 OCA 模块,可以在 datepicker 中添加所有可能的选项。但是一个问题是,该模块没有升级到版本 10。我正在研究它,你可以在我的 github 上找到它。 github.com/jo541/web/tree/10.0/web_widget_datepicker_options原文是github.com/OCA/web/tree/10.0/web_widget_datepicker_options PS:选择分支10。
    • 谢谢!但那是使用旧的日期选择器,而不是新的基于引导程序的日期选择器(我之前也发现了该模块)。如果有人已经编写了一个小部件来使用具有可配置选项的新日期选择器(正如我在问题中发布的那样 - JS 文件 does 已经扩展了配置数组,但我不确定如何 - 如果可能 - 在创建时获取任何值),我有兴趣看到它。主要目标是处理 Odoo 中已有的内容,因此我们不必为新版本不断升级模块(.. 就像 jQuery-datepicker for 9 的情况一样)
    • 我的模块版本使用 datepicker 引导程序,而不是 jquery datepicker。我完全重写了代码。您可以更轻松地添加使用 minuteStepping 5 的可能性。您只需要安装我的模块版本并在字段上添加选项,如下所示 (options="{'datepicker':{'minuteStepping': 5}}" )
    • 是的,我明天会更新我的答案。包含安装模块并在现场添加选项的所有信息。
    猜你喜欢
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多