“使用动态关系的参考字段”的版本间的差异
来自Odoo大V社-odoo中文开发手册
1608138691(讨论 | 贡献) |
1608138691(讨论 | 贡献) |
||
第4行: | 第4行: | ||
比如,我们可以使用它给To-do Tasks添加一个引用字段,这个字段可以引用User或Partner: | 比如,我们可以使用它给To-do Tasks添加一个引用字段,这个字段可以引用User或Partner: | ||
# class TodoTask(models.Model): | # class TodoTask(models.Model): | ||
− | refers_to = fields.Reference([('res. | + | refers_to = fields.Reference([('res.users', 'User'), ('res.partner','Partner')],'Refers to') |
你可以发现,字段的定义方式和Selection字段定义的方式类似,只是这里的选项列表是可使用的模块。在用户界面,用户需要先从列表中选择模块,然后再选择该模块的一条记录。 | 你可以发现,字段的定义方式和Selection字段定义的方式类似,只是这里的选项列表是可使用的模块。在用户界面,用户需要先从列表中选择模块,然后再选择该模块的一条记录。 |
2018年5月7日 (一) 08:36的最新版本
一个引用固定模块的常规关系字段。引用字段的类型没有限制,并且支持动态关联,所以同样的字段可以关联多个模块。
比如,我们可以使用它给To-do Tasks添加一个引用字段,这个字段可以引用User或Partner:
# class TodoTask(models.Model): refers_to = fields.Reference([('res.users', 'User'), ('res.partner','Partner')],'Refers to')
你可以发现,字段的定义方式和Selection字段定义的方式类似,只是这里的选项列表是可使用的模块。在用户界面,用户需要先从列表中选择模块,然后再选择该模块的一条记录。
这可以灵活的配置: Referenceable Models配置表的Reference字段可以配置哪些模块可以被引用。在Setting|Technical|Database Structure(设置|技术|数据库结构)菜单中配置。当创建一条记录时,我们可以设置任何一个已经安装注册的模块,这要得益于odoo.addons.res.res_request模块的referenceable_models()函数。
使用Referenceable Models,最新的版本的引用字段是这样:
from odoo.addons.base.res.res_request import referenceable_models # class TodoTask(models.Model): refers_to = fields.Reference(referenceable_models, 'Refers to')
注意,在9.0中,这个函数的拼写有些不同,并且使用的是旧API。因此,在9.0版本中,我们在使用之前,要在Python文件头部添加一些封装代码,从而使它可以像新API一样使用:
from openerp.addons.base.res import res_request def referenceable_models(self): return res_request.referencable_models(self, self.env.cr, self.env.uid, context=self.env.context)
上一节:分层关系 下一节:计算字段