Получить значения полей в вычислении поля отношений odoo 10 - PullRequest
0 голосов
/ 24 августа 2018

Я хотел бы получить все значения записей модели в поле Many2one.Я не знаю, возможно ли это с помощью вычислений.

Мой класс Я хочу восстановить значение:

class ResPartner_school(models.Model):

    _name = 'ecole.partner.school'
    _order = 'id desc'

    school_name = fields.Many2one(comodel_name="ecole.establishment.webservice",
                              string="Etablissement Scolaire",
                               default=1)
    school_level = fields.Many2one(comodel_name="ecole.establishment.webservice",
                               string="Niveau Scolaire",
                               compute="_get_level")

Мой другой класс:

class SchoolEstablishmentWebServices(models.Model):

    _name = 'ecole.establishment.webservice'
    _rec_name = "establishment_name"

    establishment_name = fields.Many2one(comodel_name="horanet.school.establishment", string="Etablissement Scolaire")
    id_establishment = fields.Char(string='idEtablissement')
    grade_name = fields.Many2one(comodel_name="horanet.school.grade", string="Niveau Scolaire")
    id_class = fields.Char(string='idClasse')

Моя функция в моем классе ResPartner_school:

    @api.multi
    def _get_level(self):
        school_level = self.school_name.grade_name

        return school_level

Как получить все значения из поля grade_name класса SchoolEstablishmentWebServices?

1 Ответ

0 голосов
/ 27 августа 2018

Одно решение для отображения «всех» данных (зависит от объема данных) переопределяет name_get() модели с двумя вариантами.

  1. Вариант на основе контекста name_get()

Сначала переопределите name_get() модели ecole.establishment.webservice

class SchoolEstablishmentWebServices(models.Model):

    _name = 'ecole.establishment.webservice'

    @api.multi
    def name_get(self):
        res = []
        for webservice in self:
            if 'full_name' in self.env.context:
                res.append((webservice.id, webservice.get_full_name()))
            else:
                res.append((webservice.id, webservice.establishment_name))
        return res

    def get_full_name(self):
        #  example logic
        self.ensure_one()
        full_format = "{establishment}, {grade}"
        return full_format.format(
            establishment=self.establishment_name, grade=self.grade_name)

Затем вам нужно поместить значение full_name в контекст.Вы могли бы добавить это к самому полю, которое не будет работать так хорошо.Лучше поместить это значение в контекст действия меню, которое используется для отображения ваших 'ecole.partner.school' записей.

    <record id="my.list.action.for.school" model="ir.actions.act_window">
        <field name="name">my.action</field>
        <!-- and so on -->
        <field name="context">{'full_name': 1}</field>
    </record>
Вариант не на основе контекста -> он такой же, как вариант 1, без использования контекста вообще.Он будет общесистемным не только там, где вы хотите.Это более простой вариант.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...