“使用动态关系的参考字段”的版本间的差异
来自Odoo大V社-odoo中文开发手册
2355481564(讨论 | 贡献) (创建页面,内容为“ 一个引用固定模块的常规关系字段。引用字段的类型没有限制,并且支持动态关联,所以同样的字段可以关联多个模块。 比...”) |
|||
第18行: | 第18行: | ||
def referenceable_models(self): | def referenceable_models(self): | ||
return res_request.referencable_models(self, self.env.cr, self.env.uid, context=self.env.context) | return res_request.referencable_models(self, self.env.cr, self.env.uid, context=self.env.context) | ||
+ | |||
+ | 上一节:[[分层关系]] 下一节:[[计算字段]] |
2017年5月3日 (三) 21:55的版本
一个引用固定模块的常规关系字段。引用字段的类型没有限制,并且支持动态关联,所以同样的字段可以关联多个模块。
比如,我们可以使用它给To-do Tasks添加一个引用字段,这个字段可以引用User或Partner:
# class TodoTask(models.Model): refers_to = fields.Reference([('res.user', '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 importreferenceable_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)
上一节:分层关系 下一节:计算字段