odoo13 设置字段可显示到年或月

odoo13实现date字段可以在日期控件里只选择到年、月,但是由于odoo里定义的字段是date类型,所以即便这里选择的是年、月,最终保存到数据库的数据还是保存成 YYYY-MM-DD 的格式

1. 定义的字段:

month = fields.Date(string='月份')
year= fields.Date(string='年')

2. xml文件设置日期只选择到月

    注意只写1个format也可以实现, 但是只写1个viewMode不行,会导致选择了月后还是会跳转到选择日期的界面,并且只第一次打开的时候是选择到月的

<!-- 展示到月 -->
<field name="month" options="{'datepicker': {'viewMode': 'months', 'format': 'YYYY-MM'}}"/>

<!-- 展示到月,只写1个format也可以实现 -->
<field name="month" options="{'datepicker': {'format': 'YYYY-MM'}}"/>

 

 3. 展示到年:

<!-- 展示到年 -->
<field name="year" options="{'datepicker': {'viewMode': 'years', 'format': 'YYYY'}}"/>

<!-- 展示到年 -->
<field name="year" options="{'datepicker': {'format': 'YYYY'}}"/>

 

参考文件:

1. 该日期控件的js文件是:tempusdominus.js

文件在项目中的完整路径: addons/web/static/lib/tempusdominus/tempusdominus.js

参考部分代码:
DateTimePicker 中定义的字段:
var DateTimePicker = function ($, moment) {
    ...
        ViewModes = ['times', 'days', 'months', 'years', 'decades'],   # 这里定义的viewMode可选择的参数
        ...

    var MinViewModeNumber = 0,
        Default = {
        timeZone: '',
        format: false,    # 定义日期格式化
        dayViewHeaderFormat: 'MMMM YYYY',
        extraFormats: false,
        stepping: 1,
        minDate: false,   # 定义可选择的最小日期
        maxDate: false,   # 定义可选择的最大日期
        ...
        viewMode: 'days', # 定义默认展示的日期格式
        ...
    ...
)}

2. 参考了其它链接里的写法,但是不生效或者出现问题,如果以上的写法不适合当前的项目,可以尝试以下链接的写法:

链接1:

如何控制odoo时间字段只显示年或者月 - 简书

 (该链接下的方法写的是适用odoo10环境,我的odoo13环境,安装了指定模块后界面直接打不开了,删除该模块的代码后又项目又正常了。odoo10环境可以尝试下)

链接2:

Year and month picker | Odoo Apps Store

(该链接下的项目打开404,直接使用不生效)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值