将值从一个 class 赋值给另一个

Assign value from one class to another

所以在 class 1 中,例如我计算了一个价格,我想将这个价格分配给 class 2 中的一个字段。

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

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

xx_new_price 是来自另一个 class 的字段,我可以通过 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 方法(我在这个例子中省略了所有标准代码)。因为当我确认订单时,我希望它为另一个 class 的另一个字段分配一个值(在这种情况下, project.task 中的 xx_new_price 字段。 new_price 计算一个价格并包含一个浮点数。

要在 table 中写入新值,您需要调用 ORMwrite class.

首先你应该从当前对象中取出一个 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})