有什么方法可以用函数字段 odoo 格式化日期吗?

any way to format date with function field odoo?

有没有办法在 odoo/openerp 的视图中以不同的格式显示日期字段? 我尝试使用以下几行函数字段:

     def _format_date(self, cr, uid, ids, field_name, arg, context=None):
        res = {}
        for line in self.browse(cr, uid, ids, context=context):
            res[line.id]= {
                           'date_fin':'',
                           }
            print line.id,'date ',str(line.date).replace(',','.')
             if line.date:
                 res[line.id]['date_fin']=line.date #.split()[0]
        return res

    _columns={ 
'date_fin': fields.function( _format_date,method=True, string='date fin',
            store = {
                'stock.move': (lambda self, cr, uid, ids, c={}: ids, ['sale_price_unit','product_uom_qty'], 10),
            },
        ),
        }

我收到这个错误:

    2015-03-11 09:35:13,539 7075 ERROR db_name openerp.http: Exception during JSON request handling.
Traceback (most recent call last):
  File "/opt/odoo/odoo/openerp/http.py", line 518, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/odoo/odoo/openerp/http.py", line 539, in dispatch
    result = self._call_function(**self.params)
...
  File "/opt/odoo/odoo/openerp/models.py", line 5237, in <dictcomp>
    if name in fields
  File "/opt/odoo/odoo/openerp/fields.py", line 1028, in convert_to_cache
    return float_round(float(value or 0.0), precision_digits=self.digits[1])
TypeError: float() argument must be a string or a number

你知道这个错误吗

在语言设置中,您可以为特定语言更改整个系统的日期格式。

但是如果您只想为特定字段格式化日期,您可以使用计算字段而不是相关字段。计算方法中,returns格式良好的日期

您可以这样定义计算字段:

def _get_date_fin(self):
    self.date_fin = self.date.strftime('%d-%m-%Y')

_columns={
    'date_fin': fields.char(string='datee', size=64, readonly=True, compute=_get_date_fin),
    }

我解决了:

   def _format_date(self, cr, uid, ids, field_name, arg, context=None):
        res = {}
        for line in self.browse(cr, uid, ids, context=context):
            print line.id,'date ',str(line.date).replace(',','.')
            if line.date:
                res[line.id]=line.date.split()[0]
        return res
   _columns={       
    'date_fin': fields.function( _format_date,method=True, string='date fin',type='date',
        store = {
            'stock.move': (lambda self, cr, uid, ids, c={}: ids, ['sale_price_unit','product_uom_qty'], 10),
        },
    ),
    }