доменный фильтр odoo много2маны? - PullRequest
1 голос
/ 20 января 2020

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

это мой код

class cars(models.Model):
_name = 'cars'

name = fields.Char( string="Car",translate=True , required=True, ondelete='restrict')

class autopartscompany(models.Model):
_inherit = 'res.company'

car_ids = fields.Many2many(comodel_name="cars",string="Cars" )


class autopart(models.Model):
_inherit = 'product.template'

car = fields.Many2one(comodel_name="cars", store=True, string="Car", ondelete='restrict', required=False, domain="[('name','=', self.company_id.car_ids )]")

Может ли кто-нибудь помочь мне, как правильно определить фильтр домена потому что тот выдает мне ошибку Ошибка: NameError: имя 'self' не определено

Ответы [ 2 ]

0 голосов
/ 20 января 2020

это лучшее решение для ее решения

def _get_cars_domain(self):
    print (self.company_id.car_ids)
    return [('id', 'in', self.env.user.company_id.car_ids.ids)]

car = fields.Many2one(comodel_name="cars", store=True, string="Car", ondelete='restrict', required=False,domain=_get_cars_domain)
0 голосов
/ 20 января 2020

Чтобы установить динамический c домен на основе другого поля, особенно поля много2, которое может содержать много записей, используйте onchange. Я думаю, что это лучший способ:

class autopart(models.Model):
    _inherit = 'product.template'

    car = fields.Many2one(comodel_name="cars", store=True, string="Car", ondelete='restrict', required=False)

    # add the field itself to onchange to trigger this method in edit mode too
    @api.onchange('company_id', 'car') 
    def onchange_company(self):
        domain = []
        if self.company_id:
            domain.append(('id', 'in', self.company_id.car_ids.ids))
        return {'domain': {'car': domain}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...