Как я могу получить атрибуты из отношений Many2One на odoo? - PullRequest
0 голосов
/ 09 мая 2019

Я делаю какой-то школьный проект и хочу получить атрибуты из класса с отношением Many2One, более конкретно, я хочу получить preu_lloguer из моего другого класса в классе Factura.

Здеськласс, в котором я хочу получить значение от другого и поместить в «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 ]

1 голос
/ 20 мая 2019

это действительно зависит от того, как вы хотите, чтобы информация была просмотрена. Должно ли связанное поле быть полем в текущей модели? если это так, используйте соответствующее поле.

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
    ...

Это поможет вам справиться с любой ситуацией.

0 голосов
/ 09 мая 2019

Вы можете назвать это так: Класс Factura (модел. модель): _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)
...