1

我正在 odoo11 中处理员工目录模块,如果他与相关用户不同,我想设置一个对当前用户(登录用户)不可见的笔记本页面。

我尝试在 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>

请问有什么想法吗?

4

2 回答 2

5

我知道在 attrs 中使用字段的一件事必须在表单中提及该字段。我不知道如何在表单中获取用户 ID 的值。但是如果没有像 uid 或 user 这样的捷径,您可以解决这个问题,只需创建一个 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>
于 2018-02-22T12:09:17.033 回答
3

基本上,在您的情况下,我们可以直接在视图级别使用uid全局表达式变量来实现。

uid也用于 odoo xml 视图文件中的表达式评估

<page name="hr_settings" string="HR Settings" attrs="{'invisible':[('user_id', '!=', uid)]}">
    <group>
        <group string='Status' name="active_group">
            <field name="company_id"/>
                <field name="user_id" string="Related User"/>
            </group>
        </group>
    </page>

无需为代码添加和创建任何计算字段。

请看Odoo V11插件下的如下视图

插件/项目/project_view.xml。

于 2018-03-01T04:46:47.700 回答