openerp中的函数字段将amount转换为word string

2024-10-02 10:31:27 发布

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

我想知道如何将中的金额转换为opnerp7中的等价金额字符串。 我定义了一个函数字段来实现这一点,但是它在我的数据库中创建了一个字段,而不是数据,谁能指出我错在哪里,我可以在这里发布我的示例源代码

查看:

<field name="amount_words"/>

python代码

返回转换金额的函数-

^{pr2}$

函数字段声明

'amount_words': fields.function(_amount_in_words, string='In Words', type="char", store=True, help="The amount in words"),

注意:—“amount_to_text”是一个“我的应用程序”全局函数,它提供了我想要的内容,但我无法将相同的数据传递到我的视图中???在

“amount_to_text”返回的数据如下所示,如果我将amount_to_text(150)传递,它将返回 一百五十卢比


Tags: to数据函数字符串textin数据库示例
1条回答
网友
1楼 · 发布于 2024-10-02 10:31:27

在存储函数字段时,需要提供一个触发器,以便ORM层知道何时应该重新计算和存储字段。但是,这主要是针对这样一种情况:您有一个依赖于另一个模型的值的函数字段,并且您希望通过不让它在每次显示值时计算金额来加快OpenERP的速度。在

一个典型的用例是发票。发票上的合计是行的总和,因此为了加快速度,有一个触发的功能字段,以便每当发票行更改时,总金额将重新计算并存储在发票上。看看帐户.发票或者销售订单认证模块(OpenERP插件)中的模型。在

在您的例子中,更合理的做法是超越write方法并测试是否有任何必需的字段在values字典中,如果有,则计算并以单词形式存储金额。在

例如(根据记忆,请提前致歉):

def write(self, cr, uid, ids, values, context = None):
    if 'quantity' in values or 'price_unit' in values:
        values['amount_in_words'] = _get_amount_in_words(....)

    return super(MyClass, self).write(cr, uid, ids, values, context = context)

但有几点:

  1. 你必须调整“如果字段值”测试包括 每一个相关领域。最好把这个去掉然后再做 每次都是。在
  2. 别忘了重写create方法。在
  3. 记住那句老话“早期乐观是万恶之源”。 你真的确定你需要用文字来维持这个数额吗?在

相关问题 更多 >

    热门问题