【问题标题】:OpenERP attrs invisible is not workingOpenERP attrs invisible 不起作用
【发布时间】:2014-04-23 13:52:01
【问题描述】:

如果用户不属于人力资源,我正在尝试使组在视图中不可见...这是过滤组的多个条件的一部分,这是最基本的条件,这是在表单视图中:

attrs="{'invisible':[('groups_id.category_id.name','=','Human Resource')]}"

但是这会引发错误:

Uncaught Error: Unknown field groups_id.category_id.name

如果我使用

attrs="{'readonly':[('groups_id.category_id.name','=','Human Resource')]}"

该错误没有发生,但它似乎没有做任何事情......

即使attrs="{'readonly':[('1','=','1')]}" 似乎也没有做任何事情。

如果我添加<group invisible="1"

它按预期工作。

为什么隐形不起作用?此外,如果我在 attrs 中键入除不可见之外的任何内容,它似乎可以毫无问题地解析 XML...

【问题讨论】:

    标签: openerp


    【解决方案1】:

    问题是 attrs 由客户端评估,这意味着没有浏览记录,客户端无法解析 groups_id.category_id... Attrs 只能作用于客户端可用的字段,因此扩展模型并添加相关字段。把它放在不可见 = 1 的视图上,这样用户就看不到它并在你的 attrs 上使用这个字段。

    【讨论】:

    • 我不太清楚你的意思... attrs 在 XML 上,所以它应该在服务器端解析,对吧?我不确定您描述的解决方法是什么样的,但是所有逻辑都由属于某个组的用户绑定,某些字段只有在他属于某个组时才应该可见,但为了他自己的记录,他有访问所有字段。
    • XML 是存储在服务器端,是的,并且在您更新模块时被解析,但 attrs 由客户端评估,并且是元组列表的一般 OpenERP 形式(字段,运算符, 值),例如('my_field', '=', 'a') 或 ('my_boolean_field', '=', True)。您需要编写一些 python 代码来更改或扩展您正在显示的模型,以添加一个解析 groups_id.category_id.name 的字段,然后将其作为字段放到视图中,然后您的 attrs 域将是 ('my_new_field' , '=', '人力资源')。
    • 好的。感谢您的回复阿德里安。看来我需要编写一些python代码来实现这一点,这个项目的目标是尽可能不编写代码并尽可能使用OpenERP的默认配置方式。如果我在模型中添加一个包含部门名称的字段,我会尝试将该解决方案出售给我的 PM。
    • 嗯,如果您真的不想编写一些代码... (1) 通过菜单创建一个新组并将您的用户放入其中,然后 (2) 从设置 -> 用户界面-> 视图 - 找到您想要的视图并编辑 XML,使其显示 groups="my_new_group"。问题是当您下次更新模块时,除非您先手动删除视图记录,否则 XML 不会更改。
    【解决方案2】:

    据我所知,在attrs你只能通过OpenERP基础"domain"

    域由 Web 客户端解析。这会强制您在视图事件中使用域中的所有字段(如果未显示),它们必须是不可见的字段。

    域值必须是静态的。

    attrs = "{'readonly': [('my_filed_must_be_in_view', '=', 'static_value')]}"
    

    你不能使用复杂的功能,或者服务器相关的代码,范围仅限于视图。

    【讨论】:

    【解决方案3】:

    是的,我们不能在这里使用对象字段关系来获取 ATTRS 中的值,尽管我们可以在 DOMAIN 中使用这种功能!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-03
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      相关资源
      最近更新 更多