【问题标题】:Function field is not working in OpenERP函数字段在 OpenERP 中不起作用
【发布时间】:2014-11-17 13:02:39
【问题描述】:

purchase.order.line 中我添加了新字段pln price 并将单价字段更改为函数:

'price_unit': fields.function(_amount_pln, string='Unit Price', required=True, digits_compute= dp.get_precision('Product Price')),
'plnprice': fields.float('PLN Price', digits_compute= dp.get_precision('PLN Price')),

这里是函数:

def _amount_pln(self, cr, uid, ids, prop, arg, context=None):
    res = {}
    for line in self.browse(cr, uid, ids, context=context):
        res[line.id] = line.plnprice * 0.25
    return res

交换值现在是硬编码的,0.25,正如您在 _amount_pln 函数中看到的那样

然后我在purchase.order 类中添加了新字段:

'exchange_value': fields.float('Exchange',readonly=False)

但是我不知道如何将此字段值传递给我的_amount_pln 函数。 你能帮我解决这个问题吗?

【问题讨论】:

    标签: python openerp openerp-7


    【解决方案1】:

    有时函数字段需要参数:store=True

    尝试将此参数添加到您的函数字段中,看看它是否有效。

    【讨论】:

      【解决方案2】:

      尝试关注,

      def _amount_pln(self, cr, uid, ids, prop, arg, context=None):
          res = {}
          for line in self.browse(cr, uid, ids, context=context):
              res[line.id] = line.plnprice * line.order_id.exchange_value
          return res
      

      order_id是采购订单行中与采购订单相关的many2one字段,因此您可以轻松访问采购订单行中采购订单的值。

      【讨论】:

        【解决方案3】:

        “purchase.order”和“purchase.order.line”之间的关系是“order_id”。 “purchase.order.line”包含“order_id”。您可以使用此“order_id”获取“purchase.order”的值。

        for purchase_line in self.browse(cr, uid, ids, context=context):
            res[line.id] = purchase_line.plnprice * purchase_line.order_id.exchange_value
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-10
          • 1970-01-01
          相关资源
          最近更新 更多