我正在使用odoo11中的Employee Directory模块,如果他与相关用户不同,我想设置一个对当前用户(Logged用户)不可见的笔记本页面。
我尝试在XML中使用user.id,但它不起作用。
这是我的代码:
<page name="hr_settings" string="HR Settings" attrs="{'invisible':[('user_id', '!=', user.id)]}">
<group>
<group string='Status' name="active_group">
<field name="company_id"/>
<field name="user_id" string="Related User"/>
</group>
</group>
</page>
错误消息:
<class 'NameError'>: "name 'user' is not defined" while evaluating
"{'invisible': [('user_id', '!=', user.id)]}"
None" while parsing /opt/odoo/odoo/my_addons/hr_dz/views/employee_views.xml:5, near
<record id="view_employee_form" model="ir.ui.view">
<field name="name">hr.employee.form</field>
请问有什么想法吗?
答案 0 :(得分:3)
我知道在场地中使用场地的其中一项必须在表格中提及。我不知道如何在表单中获取用户ID的值。但是如果没有像uid或用户这样的简短方法你可以在这周围工作,只需创建一个m2o字段来res.users使用store = False创建这个字段计算字段。
请尝试这对你有用。:
# by default store = False this means the value of this field
# is always computed.
current_user = fields.Many2one('res.users', compute='_get_current_user')
@api.depends()
def _get_current_user(self):
for rec in self:
rec.current_user = self.env.user
# i think this work too so you don't have to loop
self.update({'current_user' : self.env.user.id})
您可以在表单中使用此字段。
<page name="hr_settings" string="HR Settings" attrs="{'invisible':[('user_id', '=', current_user)]}">
<group>
<group string='Status' name="active_group">
<field name="company_id"/>
<field name="user_id" string="Related User"/>
</group>
</group>
</page>
答案 1 :(得分:2)
基本上,在您的情况下,我们可以在视图级别直接使用 uid 全局表达式变量。
uid 也用于odoo xml视图文件中的表达式评估
.. = Branch a (fmap f left) (fmap f right)
无需为代码添加和创建任何计算字段。
请参阅Odoo V11插件下的以下视图
插件/项目/ project_view.xml。