我如何从odoo的Many2One关系中获取属性?

时间:2019-05-09 10:37:22

标签: python odoo odoo-10

我正在做一些学校项目,我想从具有Many2One关系的一堂课中获得attrs,更具体地说,我想从我的Factura课的另一堂课中获得preu_lloguer。

这里是我要从另一个获取值并放在“ preu”上的类:

class Factura(models.Model):
    _name = 'carplus.factura'

    client_id = fields.Many2one("carplus.client", string="Client", required=True)
    vehicle_id = fields.Many2one("carplus.cotxe", string="Vehicle", required=True)
    renting_id = fields.Many2one("carplus.rentinglloguer", string="Contracte", required=True)
    preu = fields.Float(string="Preu")
    data_factura = fields.Date(string="Data de factura", required=True)

这里是我需要的attr类:

class Cotxe(models.Model):
    _name = 'carplus.cotxe'

    marca_id = fields.Many2one("carplus.cotxemarca", string="Marca", required=True)
    model = fields.Char(string="Model", required=True)
    color = fields.Char(string="Color")
    name = fields.Char(string="Matricula", required=True)
    data_compra = fields.Date(string="Data de compra", required=True)
    places = fields.Integer(string="Número de plaçes", required=True)
    tipus_id = fields.Many2one("carplus.cotxetipus", string="Tipus", required=True)
    combustible_id = fields.Many2one("carplus.cotxecombustible", string="Combustible", required=True)
    preu_lloguer = fields.Float(string="Preu lloguer", required=True)
    preu_renting = fields.Float(string="Preu renting", required=True)

PD:对英语不好对不起

2 个答案:

答案 0 :(得分:1)

这实际上取决于您希望如何查看信息。相关字段应该是当前模型上的字段吗?如果是这样,请使用相关字段。

preu = fields.Float(related='vehicle_id.preu_lloguer')

如果您只需要在方法中引用属性,请使用以下

vehicle_id.preu_lloguer

如果您需要确定要选择哪个不同的价格。您将需要使用计算字段。

preu = fields.Float(compute='_compute_price')

def _compute_price(self):
    ...
    set code here
    ...

这应该可以帮助您解决所有情况。

答案 1 :(得分:0)

您可以这样称呼它: Factura类(models.Model):     _name ='carplus.factura'

client_id = fields.Many2one("carplus.client", string="Client", required=True)
vehicle_id = fields.Many2one("carplus.cotxe", string="Vehicle", required=True)
renting_id = fields.Many2one("carplus.rentinglloguer", string="Contracte", required=True)
preu = fields.Float(string="Preu")
data_factura = fields.Date(string="Data de factura", required=True)
preu_lloguer = fields.Many2one("carplus.cotxe", string=" preu lloguer", required=True)