怎么知道domain中可以使用那些对象
-
例如['|','|',('group_ids','in',[g.id for g in user.groups_id]), ('user_id', '=', user.id), '&', ('user_id', '=', False), ('group_ids','=',False), '|','|', ('company_id','=',False), ('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]
user.id表示一个登陆用户的id,在写domain时,如何知道有哪些对象可用,如何写。例如安装了hr模块,想写一个员工的id,应该怎么写:hr_employee.id 或 hr.employee.id都是错的。 -
首先要明白domain是什么,domain实际上就是对‘实体对象‘(或者简单理解为数据库表)的记录的过滤规则。
所以,与你问得正相反,写domain首先要确定作用的对象(实体对象)是什么。在确认对象后你就可以对该对象的对应字段创建过滤规则,即domain.
而实体对象的名称及其字段的名称是在模块的类定义中的。比如员工对象的名称就是在类属性_name中定义的_name='hr.employee'
如果你的domain是对hr.emplyee对象的,那么每个员工的id就是:id -
引用一下 buke 发的内容. 供参考:
<br /> 'message_ids': fields.one2many('mail.message', 'res_id',<br /> domain=lambda self: [('model', '=', self._name)],<br /> auto_join=True,<br /> string='Messages',<br /> help="Messages and communication history"),<br />
还要注意 auto_join 参数....