首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在关系字段odoo 10的计算中检索字段值

在关系字段odoo 10的计算中检索字段值
EN

Stack Overflow用户
提问于 2018-08-24 21:40:59
回答 1查看 380关注 0票数 0

我想在Many2one字段中检索模型记录的所有值​​。我不知道用电脑能不能做到。

我的类I想要恢复值:

代码语言:javascript
运行
复制
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")

我的另一个类:

代码语言:javascript
运行
复制
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中的函数:

代码语言:javascript
运行
复制
    @api.multi
    def _get_level(self):
        school_level = self.school_name.grade_name

        return school_level

如何从类SchoolEstablishmentWebServicesgrade_name字段中检索所有值​​

EN

回答 1

Stack Overflow用户

发布于 2018-08-27 16:46:26

显示“所有”数据(取决于有多少数据)的一种解决方案是使用两种变体覆盖模型的name_get()

基于上下文的

  1. 变体name_get()

首先覆盖模型ecole.establishment.webservicename_get()

代码语言:javascript
运行
复制
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'条目。

代码语言:javascript
运行
复制
    <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. 变体不基于上下文的->它与变体1相同,根本不使用上下文。它将是系统范围的,而不仅仅是您想要的位置。它是更简单的变体。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52005767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档