Python 如何在Odoo日期时间字段中显示不同的日期格式?

Python 如何在Odoo日期时间字段中显示不同的日期格式?,python,datetime,odoo,odoo-11,Python,Datetime,Odoo,Odoo 11,目前,我们的Odoo CRM上的日期格式看起来像11/20/2017 13:03:41,但我想将格式显示为7月3日下午3:00,并在另一个地方显示为7月3日下午3:00 我们在表单中显示此字段 我已经搜索了很多来寻找如何改变格式,但主要是在本地设置中进行更改,而且它永远是一个适用于所有地方的设置。这并不能解决我们想要的问题,比如在不同的地方有两种不同的格式。沿着Odoo,使用的默认固定日期格式是default\u SERVER\u DATETIME\u format。这在文件misc.py

目前,我们的Odoo CRM上的日期格式看起来像
11/20/2017 13:03:41
,但我想将格式显示为
7月3日下午3:00
,并在另一个地方显示为
7月3日下午3:00

我们在表单中显示此字段



我已经搜索了很多来寻找如何改变格式,但主要是在本地设置中进行更改,而且它永远是一个适用于所有地方的设置。这并不能解决我们想要的问题,比如在不同的地方有两种不同的格式。

沿着Odoo,使用的默认固定日期格式是
default\u SERVER\u DATETIME\u format
。这在文件
misc.py

DEFAULT\u SERVER\u DATE\u FORMAT=“%Y-%m-%d”
默认\u服务器\u时间\u格式=“%H:%M:%S”
默认\u服务器\u日期时间\u格式=“%s%s”%(
默认\u服务器\u日期\u格式,
默认\u服务器\u时间\u格式)
因此,如果您像下面的代码那样声明字段,那么将使用该常量:

拾取时间=字段。日期时间( string=“拾取时间”, ) 因此,如果要使用另一种格式,可以使用该自定义格式创建一个计算字段。您需要使用一些日期函数:
strftime
(对象到字符串)和
strptime
(字符串到对象)。格式代码几乎在本手册的底部解释

从日期时间导入日期时间
从odoo.tools导入默认\u服务器\u日期时间\u格式
[...]
picku_time_formatted=fields.Char(#它将是一个只读字段
字符串='格式化的拾取时间',
计算=''计算\拾取\时间\格式化'
)
@api.multi
@api.视情况而定(“提取时间”)
定义计算拾取时间格式化(自):
请自行记录:
日期=记录时间
date_obj=datetime.strTime(日期,默认服务器_datetime_格式)#将其转换为日期对象
v=日期_obj.day%10#以获取操作的剩余部分
如果v==1:
序数_后缀='st'
elif v==2:
序号_后缀='nd'
elif v==3:
序数_后缀='rd'
其他:
序数_后缀='th'
#格式为“7月3日下午3:00”
record.picku_time_formatted=datetime.strftime(日期对象,'%B%d'+序号后缀+'%I:%M%p')
#格式“7月3日下午3:00”
#record.picku\u time\u formatted=datetime.strftime(日期对象,'%d%b%I:%M%p'),
然后,您可以在xml表单中显示新字段:



您可以使用希望的格式创建计算字段computed field?通过编码?如果它是通过编码的,是否有任何示例……是的,您需要用python声明它。检查Odoo文档如果我有时间,我会用code@ChesuCR-好的,非常感谢。这么多?没有办法将format选项传递给field小部件?我不这么认为@mangatinanda,至少在我写答案的时候是这样。如果你找到更好的方法,请告诉我