问题描述
我正在使用 odoo Studio 创建一个模型,其中包含员工模型的 m2o 字段,我需要将其域设置为特定类别。
-
我创建了一个员工并分配了类别“Operario”
-
我在 odoo Studio 中创建了一个新模型,将 m2o 字段添加到 hr.employee 模型,并添加了下一个域:[["category_ids.name","in","Operario"]]
ValueError: Invalid field hr.employee.public.category_ids in Leaf ('category_ids.name','in','Operario')
完整代码:
Traceback (most recent call last):
File "/home/odoo/src/odoo/14.0/odoo/addons/base/models/ir_http.py",line 237,in _dispatch
result = request.dispatch()
File "/home/odoo/src/odoo/14.0/odoo/http.py",line 683,in dispatch
result = self._call_function(**self.params)
File "/home/odoo/src/odoo/14.0/odoo/http.py",line 359,in _call_function
return checked_call(self.db,*args,**kwargs)
File "/home/odoo/src/odoo/14.0/odoo/service/model.py",line 94,in wrapper
return f(dbname,**kwargs)
File "/home/odoo/src/odoo/14.0/odoo/http.py",line 347,in checked_call
result = self.endpoint(*a,**kw)
File "/home/odoo/src/odoo/14.0/odoo/http.py",line 912,in __call__
return self.method(*args,line 531,in response_wrap
response = f(*args,**kw)
File "/home/odoo/src/odoo/14.0/addons/web/controllers/main.py",line 1377,in call_kw
return self._call_kw(model,method,args,kwargs)
File "/home/odoo/src/odoo/14.0/addons/web/controllers/main.py",line 1369,in _call_kw
return call_kw(request.env[model],kwargs)
File "/home/odoo/src/odoo/14.0/odoo/api.py",line 392,in call_kw
result = _call_kw_model(method,model,line 365,in _call_kw_model
result = method(recs,**kwargs)
File "/home/odoo/src/odoo/14.0/odoo/models.py",line 1796,in name_search
ids = self._name_search(name,operator,limit=limit)
File "/home/odoo/src/odoo/14.0/odoo/models.py",line 1812,in _name_search
return self._search(args,limit=limit,access_rights_uid=name_get_uid)
File "/home/odoo/src/odoo/14.0/addons/hr/models/hr_employee.py",line 166,in _search
ids = self.env['hr.employee.public']._search(args,offset=offset,order=order,count=count,access_rights_uid=access_rights_uid)
File "/home/odoo/src/odoo/14.0/odoo/models.py",line 4492,in _search
query = self._where_calc(args)
File "/home/odoo/src/odoo/14.0/odoo/models.py",line 4248,in _where_calc
return expression.expression(domain,self).query
File "/home/odoo/src/odoo/14.0/odoo/osv/expression.py",line 438,in __init__
self.parse()
File "/home/odoo/src/odoo/14.0/odoo/osv/expression.py",line 640,in parse
raise ValueError("Invalid field %s.%s in leaf %s" % (model._name,path[0],str(leaf)))
Exception
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/odoo/src/odoo/14.0/odoo/http.py",line 639,in _handle_exception
return super(JsonRequest,self)._handle_exception(exception)
File "/home/odoo/src/odoo/14.0/odoo/http.py",line 315,in _handle_exception
raise exception.with_traceback(None) from new_cause
ValueError: Invalid field hr.employee.public.category_ids in leaf ('category_ids.name','Operario')
在错误详细信息的最后一行,我看到了 public 这个词,我不确定那是不是子模型,无论如何我不知道在哪里为非 HR 成员设置这些权限。
解决方法
首先,您需要在开始时使用 employee_id
而不是 category_ids
。因为它存在于 hr.employee 表中,而不是 hr.employee.public 表中。
试试这个方法,
[["employee_id.category_ids.name","=","Operario"]]
也可以使用 in
、=
、like
代替 ilike
运算符,以便更好地与字符串类型的值集成。