将值从一个类分配给另一个类

时间:2015-04-08 11:41:59

标签: openerp

因此,在第1课中,我计算了一个价格,我想将此价格分配给第2类的字段。

我怎样才能做到这一点,我尝试了以下方法但没有成功:

self.browse(cr, uid, ids[0]).task_id.xx_new_price = new_price

xx_new_price是来自另一个类的字段,我可以通过task_id访问该字段。 new_price只包含一个数字。

编辑:更新了代码

class PurchaseOrder(osv.Model):
_inherit = 'purchase.order'

def wkf_confirm_order(self, cr, uid, ids, context=None):
    new_price = self.pool.get('price.calculation').calculate_price(cr, uid, ids, context=context)

    for purchase_order in self.browse(cr, uid, ids):
        if purchase_order.task_id:
            task = self.pool.get('project.task').browse(cr, uid, purchase_order.task_id)[0]
            task.write({'xx_new_price': new_price})

_columns = {
    'project_id': fields.many2one('project.project', 'Project'),
    'task_id': fields.many2one('project.task', 'Task')
}

所以我从采购订单继承了wkf_confirm方法(我为此示例留下了所有标准代码)。因为当我确认订单时,我希望它将值分配给另一个类的另一个字段(在本例中为project.task中的字段xx_new_price .new_price计算价格并包含浮点数。

1 个答案:

答案 0 :(得分:1)

要在表中写入新值,您需要为该类调用 ORM write

首先,您应该从当前对象获取 task_id ,然后分配 new_price

例如:

for project in self.browse(cr, uid, ids):
    if project.task_id:
        project.task_id.write({'xx_new_price': new_price})