2
votes

I have a custom object "Car" with a one2many relationship to another object "Trips" which captures the various trips made by the car.I added the trips to the form view of the car so i can see all the trips made by each car. I created a custom many2one field in sale.order called "x_car" related to "Car" and added it to the sale.order form view. Now i want to add a one2many field too, which will show the trips of the car when it is selected in the sale.order form view. How can i achieve that?

I have already tried to create a one2many field in sale.order (trips,car_id) and set related to x_car.trips

I hoped it would pull all the records from Trips based on the selected x_car, but it does not return any data. I know a one2many relationship would typically be based on the object_id (in this case sale_order_id) but is there a way to base it on x_car?

1

1 Answers

0
votes

You can use a computed many2many field for such purposes:

class SaleOrder(models.Model):
    _inherit = "sale.order"

    car_id = fields.Many2one(comodel_name="car")
    trip_ids = fields.Many2many(
        comodel_name="trip", string="Trips",
        compute="_compute_trip_ids")

    @api.multi
    @api.depends('car_id')
    def _compute_trip_ids(self):
        for order in self:
            order.trip_ids = order.car_id.trip_ids.ids

I bet your field names or a bit off of my example, but i always try to stick to the Odoo guidelines. Just substitute them with your names ;-)