Домен в xml odoo 10 - PullRequest
       11

Домен в xml odoo 10

0 голосов
/ 05 ноября 2018

Я хочу использовать фильтр домена в моем поле xml следующим образом:

domain="[('id','>=',field)]"

Однако я не понимаю, как это работает!

Вот мои поля:

    responsible_partner = fields.Many2one(string="Responsible",
                                          comodel_name="res.partner",
                                          ondelete='restrict',
                                          domain="[('company_type','=','person')]",
                                          delegate=False)
    responsible_foyer = fields.Many2one(string="Foyer responsible", comodel_name="horanet.relation.foyer", copy=False)

Здесь мой вид XML:

   <field name="responsible_partner" required="True" domain="[('id','=',responsible_foyer.partner_id)]" />
   <field name="responsible_foyer" />

Вот моя функция:

@api.onchange('partner_id')
def _get_active_foyer(self):
    if self.partner_id:
        actually_partner_id = self.partner_id.name
        if actually_partner_id:
            records_foyer_id = self.env['horanet.relation.foyer'].search([('partner_id', '=', actually_partner_id)])

            for rec_foyer in records_foyer_id:
                if rec_foyer.foyer_id:
                    records_partner_id = self.env['horanet.relation.foyer'].search(
                        [('foyer_id', '=', rec_foyer.foyer_id.id)])
                    for rec_partner in records_partner_id:
                        if rec_partner.partner_id:
                            self.responsible_partner = rec_partner.partner_id.id
                            self.responsible_foyer = rec_partner.id
                            # self.test_foyer = rec_partner.foyer_id.id
                            print self.test_foyer 

Ошибка:

Ошибка: AttributeError: у объекта нет атрибута 'partner_id'

Однако в моей модели есть поле partner_id: "horanet.relation.foyer".

Можете ли вы объяснить мне?

Спасибо

1 Ответ

0 голосов
/ 06 ноября 2018

Вы не можете получить доступ к дочерним записям из XML (т. Е. Части после точки). Вы можете ссылаться только на поля в самой форме, поэтому вам нужно будет создать новое связанное поле, чтобы получить желаемое значение, а затем добавить его в форму как невидимое поле, после чего вы сможете использовать его как часть своего домена.

Изменить: подробное решение ниже:

Вы можете добавить связанное поле в коде Python, например:

responsible_foyer_partner_id = fields.Many2one('res.partner', related="responsible_foyer.partner_id", string="Responsible Foyer Partner")

Затем в своем XML вы можете добавить это поле в представление формы, но оставить его невидимым. Это позволит вам использовать его в вашем домене, но не загромождает вид формы.

<field name="responsible_foyer_partner_id" invisible="1"/>

Теперь вы можете использовать это поле в своем домене

<field name="responsible_partner" required="True" domain="[('id','=',responsible_foyer_partner_id)]" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...